/* A NCURSES/CDK TUI (Text User Interface) for MuSE * Copyright (C) 2003 Luca 'rubik' Profico * * This source code is free software; you can redistribute it and/or * modify it under the terms of the GNU Public License as published * by the Free Software Foundation; either version 2 of the License, * or (at your option) any later version. * * This source code is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * Please refer to the GNU Public License for more details. * * You should have received a copy of the GNU Public License along with * this source code; if not, write to: * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * $Id: encsetbox.cpp,v 1.3 2004/12/15 18:18:07 jaromil Exp $ * */ #include "encsetbox.h" #include "muse_console.h" EncSetBox::EncSetBox () { bitratelist[0] = strdup ("8"); bitratelist[1] = strdup ("16"); bitratelist[2] = strdup ("24"); bitratelist[3] = strdup ("32"); bitratelist[4] = strdup ("56"); bitratelist[5] = strdup ("64"); bitratelist[6] = strdup ("96"); bitratelist[7] = strdup ("128"); freqlist[0] = strdup ("auto"); freqlist[1] = strdup ("11000"); freqlist[2] = strdup ("16000"); freqlist[3] = strdup ("22050"); freqlist[4] = strdup ("44100"); chanlist[0] = strdup ("0 - stereo"); chanlist[1] = strdup ("1 - jstereo"); chanlist[2] = strdup ("2 - dual chan"); chanlist[3] = strdup ("3 - mono"); qualitylist[0] = strdup ("1 (best)"); qualitylist[1] = strdup ("2"); qualitylist[2] = strdup ("3"); qualitylist[3] = strdup ("4"); qualitylist[4] = strdup ("5"); qualitylist[5] = strdup ("6"); qualitylist[6] = strdup ("7"); qualitylist[7] = strdup ("8"); qualitylist[8] = strdup ("9 (worst)"); filteringlist[0] = strdup ("auto"); filteringlist[1] = strdup ("none"); filteringlist[2] = strdup ("manual"); } void EncSetBox::setscreen (CDKSCREEN *screen) { cdkscreen = screen; } void EncSetBox::setmixer (Stream_mixer *m, encdata *e) { mixer = m; enc = e; } void EncSetBox::setparm (int x, int y) { warning ("EncSetBox::setparm() cdkscreen = %p [START]", cdkscreen); xbase=x; ybase=y; bitrate.setscreen (cdkscreen); bitrate.box=FALSE; filtering.setscreen (cdkscreen); filtering.box=FALSE; frequency.setscreen (cdkscreen); frequency.box=FALSE; lowpasshz.setscreen (cdkscreen); lowpasshz.box=FALSE; channels.setscreen (cdkscreen); channels.box=FALSE; highpasshz.setscreen (cdkscreen); highpasshz.box=FALSE; quality.setscreen (cdkscreen); quality.box=FALSE; label1.setscreen (cdkscreen); bitrate.setparm (NULL, "bitrate:", xbase +1, ybase +8, bitratelist, 8, 2, false); filtering.setparm (NULL, "freq. filtering:", xbase +15, ybase +8, filteringlist, 3, 0, false); frequency.setparm (NULL, "frequency:", xbase+44, ybase +8, freqlist, 5, 2, false); lowpasshz.setparm (NULL, "lowpassHZ:", 5, xbase +2, ybase+10, false, '_'); highpasshz.setparm (NULL, "highpassHZ:", 5, xbase +20, ybase+10, false, '_'); channels.setparm (NULL, "channels:", xbase +37, ybase +10, chanlist, 4, 0, false); quality.setparm (NULL, "quality:", xbase+1, ybase +12, qualitylist, 9, 3, false); label1.setparm (xbase, ybase,30, 1); label1.setvalue ("Encoder settings:"); warning ("EncSetBox::setparm() objcnt = %d ", cdkscreen->objectCount); label1.unreg (); bitrate.unreg (); filtering.unreg (); frequency.unreg (); lowpasshz.unreg (); channels.unreg (); highpasshz.unreg (); quality.unreg (); // showcurrval(); func ("EncSetBox::setparm() cdkscreen = %p objcnt = %d [END]", cdkscreen,cdkscreen->objectCount); } void EncSetBox::reg (void) { func ("EncSetBox::draw() cdkscreen =%p objcnt = %d [START]", cdkscreen, cdkscreen->objectCount); label1.reg(); label1.draw(); bitrate.reg(); bitrate.draw(); filtering.reg(); filtering.draw(); frequency.reg(); frequency.draw(); lowpasshz.reg(); lowpasshz.draw(); highpasshz.reg(); highpasshz.draw(); channels.reg(); channels.draw(); quality.reg(); quality.draw(); func ("EncSetBox::draw() cdkscreen =%p objcnt = %d [END]", cdkscreen, cdkscreen->objectCount); } void EncSetBox::draw (void) { func ("EncSetBox::draw() cdkscreen =%p objcnt = %d [START]", cdkscreen, cdkscreen->objectCount); label1.draw(); bitrate.draw(); filtering.draw(); frequency.draw(); lowpasshz.draw(); highpasshz.draw(); channels.draw(); quality.draw(); func ("EncSetBox::draw() cdkscreen =%p objcnt = %d [END]", cdkscreen, cdkscreen->objectCount); } void EncSetBox::unreg (void) { func ("EncSetBox::unreg() bitrate.cdkscreen=%p", bitrate.getscreen()); label1.unreg(); label1.erase(); bitrate.unreg(); bitrate.erase(); filtering.unreg(); filtering.erase(); frequency.unreg(); frequency.erase(); lowpasshz.unreg(); lowpasshz.erase(); highpasshz.unreg(); highpasshz.erase(); channels.unreg(); channels.erase(); quality.unreg(); quality.erase(); func ("EncSetBox::unreg() bitrate.cdkscreen=%p label1.cdkscreen=%p", bitrate.getscreen(), label1.getscreen()); } void EncSetBox::erase (void) { filtering.destroy(); bitrate.destroy(); frequency.destroy(); lowpasshz.destroy(); highpasshz.destroy(); channels.destroy(); quality.destroy(); label1.destroy(); } int EncSetBox::tabentry (int k) { int retval = 0; int loop=0; while (!loop) { loop=1; switch (k) { case 'b': //bitrate bitrate.activate(); if (bitrate.lastkey() != 9) break; case 't': //frequency filtering filtering.activate(); if (filtering.lastkey() != 9) break; case 'f': //frequency frequency.activate(); if (frequency.lastkey() != 9) break; case 'l': //lowpass hz lowpasshz.activate(); if (lowpasshz.lastkey() != 9) break; case 'i': //highpass hz highpasshz.activate(); if (highpasshz.lastkey() != 9) break; case 'c': //channels channels.activate(); if (channels.lastkey() != 9) break; case 'q': // quality quality.activate(); if (quality.lastkey() != 9) break; case NULL: k='b'; // start from first case loop = 0; break; default: retval = 0; break; } } return retval; } void EncSetBox::setval (int id) { func ("enc->outchan = %d", mixer->get_enc(id)); enc->outchan = mixer->get_enc (id); enc->outchan->bps(bitrate.getcurritem()); //filtering; ?? enc->outchan->freq(frequency.getcurritem());; enc->outchan->lowpass(atoi(lowpasshz.getvalue())); enc->outchan->highpass(atoi(highpasshz.getvalue())); enc->outchan->channels(channels.getcurritem()); enc->outchan->quality(quality.getcurritem()+1); } void EncSetBox::showcurrval (int id) { enc->outchan = mixer->get_enc(id); char *temp=NULL; temp = (char *) malloc(32); bitrate.setitem(enc->outchan->bps()); filtering.setitem(0); frequency.setitem(enc->outchan->freq()); snprintf (temp, 32, "%d", enc->outchan->lowpass()); lowpasshz.setvalue(temp); snprintf (temp, 32, "%d", enc->outchan->highpass()); highpasshz.setvalue(temp); channels.setitem(enc->outchan->channels()); quality.setitem((int)(enc->outchan->_quality)-1); /* //lame settings switch (mixer->lame.bps) { case 8: bitrate.setitem (0); break; case 16: bitrate.setitem (1); break; case 24: bitrate.setitem (2); break; case 32: bitrate.setitem (3); break; case 56: bitrate.setitem (4); break; case 64: bitrate.setitem (5); break; case 96: bitrate.setitem (6); break; case 128: bitrate.setitem (7); break; } //filtering.setitem (); switch (mixer->lame.freq) { //case auto: frequency.setitem (0); break; case 11000: frequency.setitem (1); break; case 16000: frequency.setitem (2); break; case 22050: frequency.setitem (3); break; case 44100: frequency.setitem (4); break; } snprintf (temp,32,"%d",mixer->lame.lowpass); lowpasshz.setvalue (temp); snprintf (temp,32,"%d",mixer->lame.highpass); highpasshz.setvalue (temp); channels.setitem (mixer->lame.mode); quality.setitem (mixer->lame.quality - 1); */ free (temp); } void EncSetBox::cleanup() { func ("EncSetBox::cleanup()"); highpasshz.reg(); highpasshz.destroy(); warning ("objcnt = %d",cdkscreen->objectCount); filtering.reg(); filtering.destroy(); warning ("objcnt = %d",cdkscreen->objectCount); bitrate.reg(); bitrate.destroy(); warning ("objcnt = %d",cdkscreen->objectCount); frequency.reg(); frequency.destroy(); warning ("objcnt = %d",cdkscreen->objectCount); channels.reg(); channels.destroy(); warning ("objcnt = %d",cdkscreen->objectCount); quality.reg(); quality.destroy(); warning ("objcnt = %d",cdkscreen->objectCount); label1.reg(); label1.destroy(); warning ("objcnt = %d",cdkscreen->objectCount); lowpasshz.reg(); lowpasshz.destroy(); func ("end EncSetBox::cleanup()"); } EncSetBox::~EncSetBox () { int i; func ("EncSetBox::~EncSetBox screen = %p objcnt = %d()", cdkscreen, cdkscreen->objectCount); for (i=0;i<8;i++) { free(bitratelist[i]); bitratelist[i] = NULL; } for (i=0;i<5;i++) { free(freqlist[i]); freqlist[i] = NULL; } for (i=0;i<4;i++) { free(chanlist[i]); chanlist[i] = NULL; } for (i=0;i<9;i++) { free(qualitylist[i]); qualitylist[i] = NULL; } for (i=0;i<3;i++) { free(filteringlist[i]); filteringlist[i] = NULL; } /* bitrate.destroy(); filtering.destroy(); frequency.destroy(); lowpasshz.destroy(); highpasshz.destroy(); channels.destroy(); quality.destroy(); label1.destroy(); */ func ("end EncSetBox::~EncSetBox ()"); }