Changeset 5624:ec1593cc8525 in roaraudio for roard/codecfilter_vorbis.c


Ignore:
Timestamp:
08/18/12 02:04:07 (12 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

Added support for RePlayGain? (RPG) control (See: #300)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roard/codecfilter_vorbis.c

    r5381 r5624  
    305305 char key[ROAR_META_MAX_NAMELEN] = {0}, value[LIBROAR_BUFFER_MSGDATA] = {0}; 
    306306 struct roar_stream * s = ROAR_STREAM(self->stream); 
     307 struct roar_stream_rpg rpg; 
    307308 int type; 
    308309 int j, h = 0; 
    309  float rpg_track = 0, rpg_album = 0; 
     310 float rpg_track = 0, rpg_album = 0, rpg_final; 
    310311 int meta_ok; 
    311312 
     
    373374 } 
    374375 
    375  if ( rpg_album ) { 
    376   self->stream->mixer.rpg_div = 2718;  // = int(exp(1)*1000) 
    377   self->stream->mixer.rpg_mul = (float)rpg_album*2718; 
    378  } else if ( rpg_track ) { 
    379   self->stream->mixer.rpg_div = 2718; 
    380   self->stream->mixer.rpg_mul = (float)rpg_track*2718; 
     376 if ( streams_get_rpg(ROAR_STREAM(self->stream)->id, &rpg) != -1 ) { 
     377  rpg_final = 0; 
     378 
     379  switch (rpg.mode) { 
     380   case ROAR_RPGMODE_NONE: rpg_final =  0.; break; 
     381   case ROAR_RPGMODE_USER: rpg_final = -1.; break; 
     382   case ROAR_RPGMODE_ALBUM: rpg_final = rpg_album; break; 
     383   case ROAR_RPGMODE_TRACK: rpg_final = rpg_track; break; 
     384   case ROAR_RPGMODE_ALBUMTRACK: rpg_final = rpg_album ? rpg_album : rpg_track; break; 
     385   case ROAR_RPGMODE_TRACKALBUM: rpg_final = rpg_track ? rpg_track : rpg_album; break; 
     386  } 
     387 
     388  if ( rpg_final > 0 ) { 
     389   self->stream->mixer.rpg_div = 2718; 
     390   self->stream->mixer.rpg_mul = (float)rpg_final*2718; 
     391  } else if ( !rpg_final ) { 
     392   self->stream->mixer.rpg_div = 1; 
     393   self->stream->mixer.rpg_mul = 1; 
     394  } 
    381395 } 
    382396 
Note: See TracChangeset for help on using the changeset viewer.