[FFmpeg-cvslog] avformat: support shorten in nistshpere demuxer
Paul B Mahol
git at videolan.org
Thu Apr 7 22:58:18 CEST 2016
ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Wed Apr 6 21:57:52 2016 +0200| [0c9490609d888ba384798777a3daaf012488ad89] | committer: Paul B Mahol
avformat: support shorten in nistshpere demuxer
Signed-off-by: Paul B Mahol <onemda at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0c9490609d888ba384798777a3daaf012488ad89
---
libavcodec/shorten.c | 4 ++++
libavformat/nistspheredec.c | 6 +++++-
2 files changed, 9 insertions(+), 1 deletion(-)
diff --git a/libavcodec/shorten.c b/libavcodec/shorten.c
index b27707a..9da04eb 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 2f17f9e..b95a06d 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);
}
More information about the ffmpeg-cvslog
mailing list