git-svn-id: https://svn.musicpd.org/mpd/trunk@326 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
parent
cf2986c68f
commit
3130ea01c5
|
@ -98,7 +98,7 @@ int mp4_decode(Buffer * cb, AudioFormat * af, DecoderControl * dc) {
|
||||||
long seekTableEnd = -1;
|
long seekTableEnd = -1;
|
||||||
int seekPositionFound = 0;
|
int seekPositionFound = 0;
|
||||||
long offset;
|
long offset;
|
||||||
mpd_uint16 bitRate;
|
mpd_uint16 bitRate = 0;
|
||||||
|
|
||||||
fh = fopen(dc->file,"r");
|
fh = fopen(dc->file,"r");
|
||||||
if(!fh) {
|
if(!fh) {
|
||||||
|
@ -156,7 +156,6 @@ int mp4_decode(Buffer * cb, AudioFormat * af, DecoderControl * dc) {
|
||||||
af->sampleRate = sampleRate;
|
af->sampleRate = sampleRate;
|
||||||
af->channels = channels;
|
af->channels = channels;
|
||||||
time = mp4ff_get_track_duration_use_offsets(mp4fh,track);
|
time = mp4ff_get_track_duration_use_offsets(mp4fh,track);
|
||||||
bitRate = mp4ff_get_avg_bitrate(mp4fh,track);
|
|
||||||
scale = mp4ff_time_scale(mp4fh,track);
|
scale = mp4ff_time_scale(mp4fh,track);
|
||||||
|
|
||||||
if(mp4Buffer) free(mp4Buffer);
|
if(mp4Buffer) free(mp4Buffer);
|
||||||
|
@ -229,14 +228,21 @@ int mp4_decode(Buffer * cb, AudioFormat * af, DecoderControl * dc) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(dur+offset > frameInfo.samples) {
|
if(channels*(dur+offset) > frameInfo.samples) {
|
||||||
dur = frameInfo.samples;
|
dur = frameInfo.samples;
|
||||||
offset = 0;
|
offset = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
sampleCount = (unsigned long)(dur*channels);
|
sampleCount = (unsigned long)(dur*channels);
|
||||||
|
|
||||||
if(sampleCount>0) initial =0;
|
if(sampleCount>0) {
|
||||||
|
initial =0;
|
||||||
|
bitRate = frameInfo.bytesconsumed*8.0*
|
||||||
|
frameInfo.channels*scale/
|
||||||
|
frameInfo.samples/1024+0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
sampleBufferLen = sampleCount*2;
|
sampleBufferLen = sampleCount*2;
|
||||||
|
|
||||||
sampleBuffer+=offset*channels*2;
|
sampleBuffer+=offset*channels*2;
|
||||||
|
@ -262,7 +268,7 @@ int mp4_decode(Buffer * cb, AudioFormat * af, DecoderControl * dc) {
|
||||||
memcpy(cb->chunks+cb->end*CHUNK_SIZE+chunkLen,
|
memcpy(cb->chunks+cb->end*CHUNK_SIZE+chunkLen,
|
||||||
sampleBuffer,size);
|
sampleBuffer,size);
|
||||||
cb->times[cb->end] = time;
|
cb->times[cb->end] = time;
|
||||||
cb->bitRate[cb->end] = bitRate/1024;
|
cb->bitRate[cb->end] = bitRate;
|
||||||
sampleBuffer+=size;
|
sampleBuffer+=size;
|
||||||
chunkLen+=size;
|
chunkLen+=size;
|
||||||
if(chunkLen>=CHUNK_SIZE) {
|
if(chunkLen>=CHUNK_SIZE) {
|
||||||
|
|
Loading…
Reference in New Issue