diff options
author | Paul B Mahol <onemda@gmail.com> | 2016-04-06 21:57:52 +0200 |
---|---|---|
committer | Paul B Mahol <onemda@gmail.com> | 2016-04-07 22:15:41 +0200 |
commit | 0c9490609d888ba384798777a3daaf012488ad89 (patch) | |
tree | a252db5ba90b74ee7caa9934f1a7fdb31b34deb9 | |
parent | b7a776aa7bb6efe8a757ab899fb5046bee1120f0 (diff) | |
download | ffmpeg-0c9490609d888ba384798777a3daaf012488ad89.tar.gz |
avformat: support shorten in nistshpere demuxer
Signed-off-by: Paul B Mahol <onemda@gmail.com>
-rw-r--r-- | libavcodec/shorten.c | 4 | ||||
-rw-r--r-- | libavformat/nistspheredec.c | 6 |
2 files changed, 9 insertions, 1 deletions
diff --git a/libavcodec/shorten.c b/libavcodec/shorten.c index b27707a712..9da04eb117 100644 --- a/libavcodec/shorten.c +++ b/libavcodec/shorten.c @@ -387,6 +387,9 @@ static int read_header(ShortenContext *s) if (s->version > 1) s->lpcqoffset = V2LPCQOFFSET; + if (s->avctx->extradata_size > 0) + goto end; + if (get_ur_golomb_shorten(&s->gb, FNSIZE) != FN_VERBATIM) { av_log(s->avctx, AV_LOG_ERROR, "missing verbatim section at beginning of stream\n"); @@ -407,6 +410,7 @@ static int read_header(ShortenContext *s) if ((ret = decode_wave_header(s->avctx, s->header, s->header_size)) < 0) return ret; +end: s->cur_chan = 0; s->bitshift = 0; diff --git a/libavformat/nistspheredec.c b/libavformat/nistspheredec.c index 2f17f9eeb0..b95a06d29c 100644 --- a/libavformat/nistspheredec.c +++ b/libavformat/nistspheredec.c @@ -34,7 +34,7 @@ static int nist_probe(AVProbeData *p) static int nist_read_header(AVFormatContext *s) { - char buffer[32], coding[32] = "pcm", format[32] = "01"; + char buffer[256], coding[32] = "pcm", format[32] = "01"; int bps = 0, be = 0; int32_t header_size = -1; AVStream *st; @@ -69,6 +69,10 @@ static int nist_read_header(AVFormatContext *s) } else if (!av_strcasecmp(coding, "ulaw") || !av_strcasecmp(coding, "mu-law")) { st->codec->codec_id = AV_CODEC_ID_PCM_MULAW; + } else if (!av_strncasecmp(coding, "pcm,embedded-shorten", 20)) { + st->codec->codec_id = AV_CODEC_ID_SHORTEN; + if (ff_alloc_extradata(st->codec, 1)) + st->codec->extradata[0] = 1; } else { avpriv_request_sample(s, "coding %s", coding); } |