int DIA_getLameSettings(ADM_audioEncoderDescriptor *descriptor)
  {
    int ret=0;
    char string[400];
    uint32_t mmode,ppreset;
#define SZT(x) sizeof(x)/sizeof(diaMenuEntry )
#define PX(x) &(lameParam->x)
    
    
    LAME_encoderParam *lameParam;
    ADM_assert(sizeof(LAME_encoderParam)==descriptor->paramSize);
  
    lameParam=(LAME_encoderParam*)descriptor->param;
    mmode=lameParam->mode;
    ppreset=lameParam->preset;
    diaMenuEntry channelMode[]={
                             {ADM_STEREO,      QT_TR_NOOP("Stereo"),NULL},
                             {ADM_JSTEREO,   QT_TR_NOOP("Joint stereo"),NULL},
                             {ADM_MONO,      QT_TR_NOOP("Mono"),NULL}};
          
    diaElemMenu menuMode(&mmode,   QT_TR_NOOP("C_hannel mode:"), SZT(channelMode),channelMode);
    
    diaMenuEntry encodingMode[]={
                             {ADM_LAME_PRESET_CBR,      QT_TR_NOOP("CBR"),NULL},
                             {ADM_LAME_PRESET_ABR,   QT_TR_NOOP("ABR"),NULL},
#if 0
                             {ADM_LAME_PRESET_EXTREME,      QT_TR_NOOP("Extreme"),NULL}
#endif
    }; 
    diaElemMenu Mode(&ppreset,   QT_TR_NOOP("Bit_rate mode:"), SZT(encodingMode),encodingMode);
#define BITRATE(x) {x,QT_TR_NOOP(#x)}
    diaMenuEntry bitrateM[]={
                              BITRATE(56),
                              BITRATE(64),
                              BITRATE(80),
                              BITRATE(96),
                              BITRATE(112),
                              BITRATE(128),
                              BITRATE(160),
                              BITRATE(192),
                              BITRATE(224)
                          };
    diaElemMenu bitrate(&(descriptor->bitrate),   QT_TR_NOOP("_Bitrate:"), SZT(bitrateM),bitrateM);
    
    
    
    
    diaElemUInteger quality(PX(quality),QT_TR_NOOP("_Quality:"),0,9);
    diaElemToggle reservoir(PX(disableReservoir),QT_TR_NOOP("_Disable reservoir:"));
  
      diaElem *elems[]={&menuMode,&Mode,&quality,&bitrate,&reservoir};
    
  if( diaFactoryRun(QT_TR_NOOP("LAME Configuration"),5,elems))
  {
    lameParam->mode=(ADM_mode)mmode; 
    lameParam->preset=(ADM_LAME_PRESET)ppreset;
    return 1;
  }
  return 0;
}  
bool configure(CONFcouple **setup)
{

    uint32_t mmode,ppreset;
    ELEM_TYPE_FLOAT qqual;

    vorbis_encoder config=defaultConfig;
    if(*setup)
    {
        ADM_paramLoad(*setup,vorbis_encoder_param,&config);
    }


    mmode=config.mode;
    qqual=(ELEM_TYPE_FLOAT)config.quality;

    diaMenuEntry channelMode[]={
                             {ADM_VORBIS_VBR,      QT_TRANSLATE_NOOP("vorbis","VBR"),NULL},
                             {ADM_VORBIS_QUALITY,   QT_TRANSLATE_NOOP("vorbis","Quality based"),NULL}};

    diaElemMenu menuMode(&mmode,   QT_TRANSLATE_NOOP("vorbis","_Mode:"), SZT(channelMode),channelMode);


    diaMenuEntry bitrateM[]={
                              BITRATE(56),
                              BITRATE(64),
                              BITRATE(80),
                              BITRATE(96),
                              BITRATE(112),
                              BITRATE(128),
                              BITRATE(160),
                              BITRATE(192),
                              BITRATE(224)
                          };
    diaElemMenu bitrate(&(config.bitrate),   QT_TRANSLATE_NOOP("vorbis","_Bitrate:"), SZT(bitrateM),bitrateM);

    diaElemFloat quality(&qqual,QT_TRANSLATE_NOOP("vorbis","_Quality:"),-1.,10.);




      diaElem *elems[]={&menuMode,&bitrate,&quality};

  if( diaFactoryRun(QT_TRANSLATE_NOOP("vorbis","Vorbis Configuration"),3,elems))
  {
    config.mode=(ADM_VORBIS_MODE)mmode;
    config.quality=(float)qqual;
    if(*setup) delete *setup;
    *setup=NULL;
    ADM_paramSave(setup,vorbis_encoder_param,&config);
    defaultConfig=config;
    return 1;
  }
  return 0;
}
int DIA_getVorbisSettings(ADM_audioEncoderDescriptor *descriptor)
  {
    int ret=0;
    char string[400];
    uint32_t mmode,ppreset;
    ELEM_TYPE_FLOAT qqual;
#define SZT(x) sizeof(x)/sizeof(diaMenuEntry )
#define PX(x) &(lameParam->x)
    
    
   VORBIS_encoderParam *vorbisParam;
  ADM_assert(sizeof(VORBIS_encoderParam)==descriptor->paramSize);
  vorbisParam=(VORBIS_encoderParam*)descriptor->param;
  
    mmode=vorbisParam->mode;
    qqual=(ELEM_TYPE_FLOAT)vorbisParam->quality;
    
    diaMenuEntry channelMode[]={
                             {ADM_VORBIS_VBR,      QT_TR_NOOP("VBR"),NULL},
                             {ADM_VORBIS_QUALITY,   QT_TR_NOOP("Quality based"),NULL}};
          
    diaElemMenu menuMode(&mmode,   QT_TR_NOOP("_Mode:"), SZT(channelMode),channelMode);
    
#define BITRATE(x) {x,QT_TR_NOOP(#x)}
    diaMenuEntry bitrateM[]={
                              BITRATE(56),
                              BITRATE(64),
                              BITRATE(80),
                              BITRATE(96),
                              BITRATE(112),
                              BITRATE(128),
                              BITRATE(160),
                              BITRATE(192),
                              BITRATE(224)
                          };
    diaElemMenu bitrate(&(descriptor->bitrate),   QT_TR_NOOP("_Bitrate:"), SZT(bitrateM),bitrateM);
    
    diaElemFloat quality(&qqual,QT_TR_NOOP("_Quality:"),-1.,10.);
    
    
    
  
      diaElem *elems[]={&menuMode,&bitrate,&quality};
    
  if( diaFactoryRun(QT_TR_NOOP("Vorbis Configuration"),3,elems))
  {
    vorbisParam->mode=(ADM_VORBIS_MODE)mmode;
    vorbisParam->quality=(float)qqual;
    
    return 1;
  }
  return 0;
}  
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// init_sequences
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void init_sequences()
{

	extern Sequence_Wrapper g_sequences;

	// Local Variables
	SystemParameters    sysParams;
    char filename[100];

    gdk_threads_enter();    // Get GDK lock
    int     Br = BITRATE();
    int     Bs = BLOCKSIZE();
    char*   Fn = SEQFILENAME();
    int     Fs = FS();
    gdk_threads_leave();    // Release GDK lock

    // Set up system parameters
    sysParams.setSamplingRate(Fs);
    sysParams.setBlockSize(Bs);
	sysParams.setBitRate(Br);


	// Set up the sequences!
    g_snprintf(filename,100,"../res/%s",Fn);
	g_sequences.setSystemParameters(&sysParams);
	g_sequences.load_sequences_from_file(filename);
	g_sequences.print_sequences();

}
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// load_sequences_button_callback
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
void load_sequences_button_callback(GtkWidget * widget, GdkEvent * event)
{
	// Bring globals into scope
	extern GladeXML* gui;

    struct stat st;
    char filename[100];
    g_snprintf(filename,100,"../res/%s",SEQFILENAME());

	if(!BITRATE())
	{
		alert("Invalid Bitrate","Please enter a valid bitrate greater than zero");
		return;
	}

    if(stat(filename,&st) != 0 )
    {
        alert("File Not Found", "Check that the filename you entered is correct");
        return;
    }


	// Show calibration progress window;
    GtkWidget * window = glade_xml_get_widget(gui, "seq_progress");
   	gtk_widget_show(window);

	// Launch loader thread
	pthread_t loader;
	pthread_create(&loader, NULL, loader_thread, NULL);
}
Exemple #6
0
/* check_mp3_header: returns 0 on success */
static int check_mp3_header (int header) {
  if (((header & 0xffe00000) == 0xffe00000) &&
      (MPEG_VERSION(header) > 0.0) && (BITRATE(header) > 0)
      && (SAMPLERATE(header) > 0))
    return 0;
  else if (header == 0x4d4c4c54) /* MLLT */
    return 2;
  else
    return 1;
}
uint8_t configure(void)
{
    
    uint32_t mmode,ppreset;
    ELEM_TYPE_FLOAT qqual;
    
    
   VORBIS_encoderParam *vParam=&vorbisParam;
  
    mmode=vParam->mode;
    qqual=(ELEM_TYPE_FLOAT)vParam->quality;
    
    diaMenuEntry channelMode[]={
                             {ADM_VORBIS_VBR,      QT_TR_NOOP("VBR"),NULL},
                             {ADM_VORBIS_QUALITY,   QT_TR_NOOP("Quality based"),NULL}};
          
    diaElemMenu menuMode(&mmode,   QT_TR_NOOP("_Mode:"), SZT(channelMode),channelMode);
    

    diaMenuEntry bitrateM[]={
                              BITRATE(56),
                              BITRATE(64),
                              BITRATE(80),
                              BITRATE(96),
                              BITRATE(112),
                              BITRATE(128),
                              BITRATE(160),
                              BITRATE(192),
                              BITRATE(224)
                          };
    diaElemMenu bitrate(&(vParam->bitrate),   QT_TR_NOOP("_Bitrate:"), SZT(bitrateM),bitrateM);
    
    diaElemFloat quality(&qqual,QT_TR_NOOP("_Quality:"),-1.,10.);
    
    
    
  
      diaElem *elems[]={&menuMode,&bitrate,&quality};
    
  if( diaFactoryRun(QT_TR_NOOP("Vorbis Configuration"),3,elems))
  {
    vParam->mode=(ADM_VORBIS_MODE)mmode;
    vParam->quality=(float)qqual;
    return 1;
  }
  return 0;
}  
/**
    \fn configure
*/
uint8_t configure (void)
{
	diaMenuEntry bitrateM[]={
		BITRATE(56),
		BITRATE(64),
		BITRATE(80),
		BITRATE(96),
		BITRATE(112),
		BITRATE(128),
		BITRATE(160),
		BITRATE(192),
		BITRATE(224),
		BITRATE(384)
	};

	diaElemMenu bitrate(&(lavConfig.bitrate), QT_TR_NOOP("_Bitrate:"), SZT(bitrateM),bitrateM);
	diaElem *elems[] = {&bitrate};

	return diaFactoryRun(QT_TR_NOOP("Aften Configuration"), 1, elems);
}	
/**
    \fn configure
*/
bool configure (CONFcouple **setup)
{
 int ret=0;
    lav_encoder config=defaultConfig;
    if(*setup)
    {
        ADM_paramLoad(*setup,lav_encoder_param,&config);
    }

    diaMenuEntry bitrateM[]={
                              BITRATE(56),
                              BITRATE(64),
                              BITRATE(80),
                              BITRATE(96),
                              BITRATE(112),
                              BITRATE(128),
                              BITRATE(160),
                              BITRATE(192),
                              BITRATE(224),
                              BITRATE(384)
                          };
    diaElemMenu bitrate(&(config.bitrate),   QT_TR_NOOP("_Bitrate:"), SZT(bitrateM),bitrateM);



    diaElem *elems[]={&bitrate};

    if ( diaFactoryRun(QT_TR_NOOP(ADM_LAV_MENU" (lav) Configuration"),1,elems))
    {
        if(*setup) delete *setup;
        *setup=NULL;
        ADM_paramSave(setup,lav_encoder_param,&config);
        defaultConfig=config;
        return true;
    }
    return false;
}
Exemple #10
0
static size_t mpeg_frame_length (int header) {
  double bitrate = (double)BITRATE(header) * 1000.0;
  double samplerate = (double)SAMPLERATE(header);
  double padding = (double)MPEG_PADDING(header);
  char layer = MPEG_LAYER(header);
  size_t frame_length;

  if (layer == 0x11)
    frame_length = 144.0 * bitrate/samplerate + padding;
  else
    frame_length = (12 * bitrate/samplerate + padding) * 4.0;

  return (size_t)((layer != 0x11) ? (144.0 * bitrate/samplerate + padding)
	  : (12 * bitrate/samplerate + padding) * 4.0);
}
bool configure (CONFcouple **setup)
{
 int ret=0;
    dcaencoder config=DCAENC_DEFAULT_CONF;
    if(*setup)
    {
        ADM_paramLoad(*setup,dcaencoder_param,&config);
    }else
    {
        config=defaultConfig;
    }


    diaMenuEntry bitrateM[]={
                              BITRATE(320),
                              BITRATE(384),
                              BITRATE(448),
                              BITRATE(512),
                              BITRATE(640)
                          };
    diaElemMenu bitrate(&(config.bitrate),   QT_TRANSLATE_NOOP("dcaenc","_Bitrate:"), SZT(bitrateM),bitrateM);



    diaElem *elems[]={&bitrate};

    if( diaFactoryRun(QT_TRANSLATE_NOOP("dcaenc","DcaEnc Configuration"),1,elems))
    {
      if(*setup) delete *setup;
      *setup=NULL;
      ADM_paramSave(setup,dcaencoder_param,&config);
      defaultConfig=config;
      return true;
    }
    return false;
}
bool configure (CONFcouple **setup)
{
  int ret = 0;
  char string[400];
  uint32_t mmode, ppreset;
#define SZT(x) sizeof(x)/sizeof(diaMenuEntry )
#define PX(x) &(config.x)

    lame_encoder config=defaultConfig;
    if(*setup)
    {
        ADM_paramLoad(*setup,lame_encoder_param,&config);
    }

  ppreset = config.preset;

  diaMenuEntry encodingMode[] = {
    {ADM_LAME_PRESET_CBR, QT_TRANSLATE_NOOP("lame","CBR"), NULL},
    {ADM_LAME_PRESET_ABR, QT_TRANSLATE_NOOP("lame","ABR"), NULL},
  };
  diaElemMenu Mode (&ppreset, QT_TRANSLATE_NOOP("lame","Bit_rate mode:"),   SZT (encodingMode), encodingMode);

#define BITRATE(x) {x,QT_TRANSLATE_NOOP("lame",#x)}
  diaMenuEntry bitrateM[] = {
    BITRATE (56),//56
    BITRATE (64),
    BITRATE (80),
    BITRATE (96),
    BITRATE (112),
    BITRATE (128),
    BITRATE (160),
    BITRATE (192),
    BITRATE (224),
    BITRATE (256),
    BITRATE (320)
  };

//***
  diaElemMenu bitrate (&(config.bitrate), QT_TRANSLATE_NOOP("lame","_Bitrate:"), SZT (bitrateM),
		       bitrateM);
  diaElemUInteger quality (PX (quality), QT_TRANSLATE_NOOP("lame","_Quality:"), 0, 9);
  bool reservoir32=config.disableBitReservoir;
  diaElemToggle reservoir (&reservoir32,
			   QT_TRANSLATE_NOOP("lame","_Disable reservoir:"));

  diaElem *elems[] = { &Mode, &bitrate,&quality, &reservoir };

  if (diaFactoryRun (QT_TRANSLATE_NOOP("lame","LAME Configuration"), 4, elems))
    {
      config.preset=(ADM_LAME_PRESET)ppreset;
      config.disableBitReservoir=reservoir32;
      if(*setup) delete *setup;
      *setup=NULL;
      ADM_paramSave(setup,lame_encoder_param,&config);
      defaultConfig=config;
      return 1;
    }
  return 0;
}
Exemple #13
0
static int mp3_scan (struct mp3_file *mp3) {
  int header;
  int ret;
  int frames = 0;
  int last_bitrate = -1;
  int total_framesize = 0;

  size_t bitrate;
  int frame_size;

  mp3_debug ("mp3_scan: Entering...\n");

  if (mp3->frames == 0 || mp3->xdata_size == 0) {
    /* This calculation will (from time to time) produce a duration that does not agree with the
       value produced by itunes. */
    while (ftell (mp3->fh) < mp3->data_size && (frames < FRAME_COUNT || mp3->vbr)) {
      fread (&header, 4, 1, mp3->fh);

      header = big32_2_arch32 (header);
      
      if (check_mp3_header (header) != 0) {
	fseek (mp3->fh, -4, SEEK_CUR);

	mp3_debug ("mp3_scan: Invalid header %08x %08x Bytes into the file.\n", header, ftell(mp3->fh));
	
	if ((ret = find_first_frame (mp3)) == -1) {
	  mp3_debug ("mp3_scan: An error occured at line: %i\n", __LINE__);
	  
	  /* This is hack-ish, but there might be junk at the end of the file. */
	  
	  break;
	} else if (ret == -2) {
	  mp3_debug ("mp3_scan: Ran into MLLT frame.\n");
	  
	  mp3->data_size -= (mp3->file_size) - ftell (mp3->fh);
	  
	  break;
	}
	
	continue;
      }
      
      bitrate = BITRATE(header);
      
      if (!mp3->vbr && (last_bitrate != -1) && (bitrate != last_bitrate))
	mp3->vbr = 1;
      else
	last_bitrate = bitrate;
      
      frame_size = mpeg_frame_length (header);
      total_framesize += frame_size;
      fseek (mp3->fh, frame_size - 4, SEEK_CUR);      
      frames++;
    }

    /* approximate the number of frames in the file */
    if (frames == FRAME_COUNT) {
      frames = (int)((double)((mp3->data_size - mp3->tagv2_size) * FRAME_COUNT) / (double)total_framesize);
      total_framesize = mp3->data_size - mp3->tagv2_size;
    }

    if (mp3->frames == 0)
      mp3->frames = frames;

    if (mp3->xdata_size == 0)
      mp3->xdata_size = total_framesize;
  }

  /* duration (ms) = frames * ms/sec * (samples/frame)/(samples/sec) */
  mp3->samples    = (long long)samples_per_frame[mp3->version_index][mp3->layer_index] * (long long)mp3->frames;
  mp3->duration   = (int)(1000.0 * (double)mp3->samples/(double)mp3->samplerate);
  mp3->bitrate    = (int)(((float)mp3->xdata_size * 8.0)/(float)mp3->duration);

  mp3_debug ("mp3_scan: Finished scan. SampleRate: %i, BitRate: %i, Length: %i, Frames: %i.\n",
	     mp3->samplerate, mp3->bitrate, mp3->duration, mp3->frames);

  if (mp3->samplerate <= 0 || mp3->bitrate <= 0 || mp3->duration <= 0)
    return -1;

  return 0;
}
Exemple #14
0
static int find_first_frame (struct mp3_file *mp3) {
  int header;
  int buffer;
  int ret;
  mp3->skippage = 0;

  while (fread (&header, 4, 1, mp3->fh)) {
    header = big32_2_arch32 (header);

    /* MPEG-1 Layer III */
    if ((ret = check_mp3_header (header)) == 0) {
      /* Check for an Xing frame (speeds up parsing) */
      fseek (mp3->fh, 32, SEEK_CUR);
      fread (&buffer, 4, 1, mp3->fh);

      if (buffer == string_to_int ("Xing")) {
	int xstart = ftell (mp3->fh);
	int xflags;

	/* an mp3 with an Xing header is ALWAYS vbr */
	mp3->vbr = 1;

	fread (&xflags, 4, 1, mp3->fh);

	mp3_debug ("Xing flags = %08x\n", xflags);

	if (xflags & 0x00000001) {
	  fread (&buffer, 4, 1, mp3->fh);
	  mp3->frames = buffer;

	  mp3_debug ("MPEG file has %i frames\n", mp3->frames);
	}

	if (xflags & 0x00000002) {
	  fread (&buffer, 4, 1, mp3->fh);
	  mp3->xdata_size = buffer;

	  mp3_debug ("MPEG file has %i bytes of data\n", mp3->xdata_size);
	}

	fseek (mp3->fh, xstart, SEEK_SET);
      }

      mp3->initial_header = header;
      mp3->samplerate  = SAMPLERATE(header);
      mp3->layer_index = MPEG_LAYER(header);
      mp3->version_index = MPEG_VERSION(header);

      mp3_debug ("Inital bitrate = %i\n", BITRATE(header));

      fseek (mp3->fh, -40, SEEK_CUR);
      return 0;
    } else if (ret == 2)
      return -2;
    
    fseek (mp3->fh, -3, SEEK_CUR);
    mp3->skippage++;
  }

  return -1;
}