Michel Bardiaux wrote:
Baptiste Coudurier wrote:
Hi,
Michel Bardiaux wrote:
Baptiste Coudurier wrote:
Hi,
[...]
Can we please fix this ? http://samples.mplayerhq.hu/A-codecs/GSM/sample-gsm-8000.mov
Choose whichever solution you prefer, but this sample should play without error message :>
Here is a 'permissive' first patch; 13000, 13200, and 0, are accepted silently.
[snip]
Multiple frames in a packet from stream 0
[Repeated many many times]
This is in ffmpeg.c:output_packet and seems to be due to weird pts'es from input,
No, packet contains multiple frames, like error message says.
This illustrates another problem with libgsm decoder: data_size must be set to 0 before returning if nothing is output.
Also if buf_size < avctx->block_align you should return error (-1) here IMHO.
Agreed. New patch for review.
[...]
+ if (avctx->bit_rate != 13000 /* Official */ && + avctx->bit_rate != 13200 /* Very common */ && + avctx->bit_rate != 0 /* Unknown, happens in some MOV */ ) {
Something like: "mov does not set bitrate when decoding" might be clearer.
[...]
static int libgsm_decode_frame(AVCodecContext *avctx, void *data, int *data_size, uint8_t *buf, int buf_size) { - - if(buf_size < avctx->block_align) return 0; - + *data_size = 0; /* In case of error */ + if(buf_size < avctx->block_align) return -1; switch(avctx->codec_id) { case CODEC_ID_GSM: if(gsm_decode(avctx->priv_data,buf,data)) return -1;
This must be in a separate commit. -- Baptiste COUDURIER GnuPG Key Id: 0x5C1ABAAA SMARTJOG SAS http://www.smartjog.com Key fingerprint 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA Phone: +33 1 49966312