summaryrefslogtreecommitdiff
path: root/libavformat/bink.c
diff options
context:
space:
mode:
authorPeter Ross <pross@xvid.org>2014-01-02 19:34:45 +1100
committerMichael Niedermayer <michaelni@gmx.at>2014-01-02 12:15:07 +0100
commit7340718d1c457f233e50e3ff4b15c113523c3200 (patch)
tree759753c4cc9d33f76698ec7dfe78a488cffbcb0b /libavformat/bink.c
parente3868cc588c4ad4ee8e77802398084387c2ad079 (diff)
downloadffmpeg-7340718d1c457f233e50e3ff4b15c113523c3200.tar.gz
avformat/bink: recognize bink2 files
Support demuxing of audio streams in bink2 files. Signed-off-by: Peter Ross <pross@xvid.org> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/bink.c')
-rw-r--r--libavformat/bink.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/libavformat/bink.c b/libavformat/bink.c
index 95b615a33a..eb1e332b61 100644
--- a/libavformat/bink.c
+++ b/libavformat/bink.c
@@ -59,8 +59,10 @@ static int probe(AVProbeData *p)
{
const uint8_t *b = p->buf;
- if ( b[0] == 'B' && b[1] == 'I' && b[2] == 'K' &&
- (b[3] == 'b' || b[3] == 'f' || b[3] == 'g' || b[3] == 'h' || b[3] == 'i') &&
+ if (((b[0] == 'B' && b[1] == 'I' && b[2] == 'K' &&
+ (b[3] == 'b' || b[3] == 'f' || b[3] == 'g' || b[3] == 'h' || b[3] == 'i')) ||
+ (b[0] == 'K' && b[1] == 'B' && b[2] == '2' && /* Bink 2 */
+ (b[3] == 'a' || b[3] == 'd' || b[3] == 'f' || b[3] == 'g'))) &&
AV_RL32(b+8) > 0 && // num_frames
AV_RL32(b+20) > 0 && AV_RL32(b+20) <= BINK_MAX_WIDTH &&
AV_RL32(b+24) > 0 && AV_RL32(b+24) <= BINK_MAX_HEIGHT &&
@@ -116,6 +118,12 @@ static int read_header(AVFormatContext *s)
vst->codec->codec_type = AVMEDIA_TYPE_VIDEO;
vst->codec->codec_id = AV_CODEC_ID_BINKVIDEO;
+
+ if ((vst->codec->codec_tag & 0xFFFFFF) == MKTAG('K', 'B', '2', 0)) {
+ av_log(s, AV_LOG_WARNING, "Bink 2 video is not implemented\n");
+ vst->codec->codec_id = AV_CODEC_ID_NONE;
+ }
+
if (ff_get_extradata(vst->codec, pb, 4) < 0)
return AVERROR(ENOMEM);