Browse Source

pass QDMC extradata to the decoder

Makes playing QDMC files in MPlayer work when using the libavformat demuxer.
Problem was that the extradata was not passed from demuxer to decoder.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
tags/n0.8
Sascha Sommer Ronald S. Bultje 15 years ago
parent
commit
ed19fafd48
3 changed files with 4 additions and 2 deletions
  1. +1
    -0
      libavcodec/avcodec.h
  2. +1
    -0
      libavformat/isom.c
  3. +2
    -2
      libavformat/mov.c

+ 1
- 0
libavcodec/avcodec.h View File

@@ -389,6 +389,7 @@ enum CodecID {
CODEC_ID_BINKAUDIO_RDFT,
CODEC_ID_BINKAUDIO_DCT,
CODEC_ID_AAC_LATM,
CODEC_ID_QDMC,

/* subtitle codecs */
CODEC_ID_DVD_SUBTITLE= 0x17000,


+ 1
- 0
libavformat/isom.c View File

@@ -249,6 +249,7 @@ const AVCodecTag codec_movaudio_tags[] = {
{ CODEC_ID_QCELP, MKTAG('Q','c','l','q') },
{ CODEC_ID_QCELP, MKTAG('s','q','c','p') }, /* ISO Media fourcc */

{ CODEC_ID_QDMC, MKTAG('Q', 'D', 'M', 'C') }, /* QDMC */
{ CODEC_ID_QDM2, MKTAG('Q', 'D', 'M', '2') }, /* QDM2 */

{ CODEC_ID_DVAUDIO, MKTAG('v', 'd', 'v', 'a') },


+ 2
- 2
libavformat/mov.c View File

@@ -769,8 +769,8 @@ static int mov_read_wave(MOVContext *c, ByteIOContext *pb, MOVAtom atom)
if((uint64_t)atom.size > (1<<30))
return -1;

if (st->codec->codec_id == CODEC_ID_QDM2) {
// pass all frma atom to codec, needed at least for QDM2
if (st->codec->codec_id == CODEC_ID_QDM2 || st->codec->codec_id == CODEC_ID_QDMC) {
// pass all frma atom to codec, needed at least for QDMC and QDM2
av_free(st->codec->extradata);
st->codec->extradata = av_mallocz(atom.size + FF_INPUT_BUFFER_PADDING_SIZE);
if (!st->codec->extradata)


Loading…
Cancel
Save