summaryrefslogtreecommitdiff
path: root/libavcodec/nellymoserdec.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2011-11-30 21:17:57 +0100
committerMichael Niedermayer <michaelni@gmx.at>2011-11-30 21:17:57 +0100
commit11828b8885cc1d87ffc7b1b4bbe642ce9720b194 (patch)
treedd65d7a9591399d472925cd42482346abe5f7481 /libavcodec/nellymoserdec.c
parent957a593cd95b15a5dcb2f50306fbac59f09d8e9e (diff)
downloadffmpeg-11828b8885cc1d87ffc7b1b4bbe642ce9720b194.tar.gz
nellymoserdec: Use sidedata to support mid stream sample rate changes.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/nellymoserdec.c')
-rw-r--r--libavcodec/nellymoserdec.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/libavcodec/nellymoserdec.c b/libavcodec/nellymoserdec.c
index cd054826f1..cf73121ef8 100644
--- a/libavcodec/nellymoserdec.c
+++ b/libavcodec/nellymoserdec.c
@@ -149,6 +149,7 @@ static int decode_tag(AVCodecContext * avctx,
void *data, int *data_size,
AVPacket *avpkt) {
const uint8_t *buf = avpkt->data;
+ const uint8_t *side=av_packet_get_side_data(avpkt, 'F', NULL);
int buf_size = avpkt->size;
NellyMoserDecodeContext *s = avctx->priv_data;
int data_max = *data_size;
@@ -179,6 +180,8 @@ static int decode_tag(AVCodecContext * avctx,
* 22050 Hz - 4
* 44100 Hz - 8
*/
+ if(side && blocks>1 && avctx->sample_rate%11025==0 && (1<<((side[0]>>2)&3)) == blocks)
+ avctx->sample_rate= 11025*(blocks/2);
for (i=0 ; i<blocks ; i++) {
if (avctx->sample_fmt == SAMPLE_FMT_FLT) {