annotate dnxhddec.c @ 6448:4775a49a6045 libavformat

split raw.c into rawdec.c and rawenc.c
author aurel
date Mon, 30 Aug 2010 23:16:35 +0000
parents 4053f191ae61
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
885
da1d5db0ce5c COSMETICS: Remove all trailing whitespace.
diego
parents: 868
diff changeset
1 /*
6439
4053f191ae61 move dnxhd demuxer to its own file
aurel
parents: 6438
diff changeset
2 * RAW DNxHD (SMPTE VC-3) demuxer
4053f191ae61 move dnxhd demuxer to its own file
aurel
parents: 6438
diff changeset
3 * Copyright (c) 2008 Baptiste Coudurier <baptiste.coudurier@gmail.com>
4053f191ae61 move dnxhd demuxer to its own file
aurel
parents: 6438
diff changeset
4 * Copyright (c) 2009 Reimar Döffinger <Reimar.Doeffinger@gmx.de>
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
5 *
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1245
diff changeset
6 * This file is part of FFmpeg.
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1245
diff changeset
7 *
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1245
diff changeset
8 * FFmpeg is free software; you can redistribute it and/or
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
9 * modify it under the terms of the GNU Lesser General Public
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
10 * License as published by the Free Software Foundation; either
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1245
diff changeset
11 * version 2.1 of the License, or (at your option) any later version.
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
12 *
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1245
diff changeset
13 * FFmpeg is distributed in the hope that it will be useful,
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
16 * Lesser General Public License for more details.
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
17 *
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
18 * You should have received a copy of the GNU Lesser General Public
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1245
diff changeset
19 * License along with FFmpeg; if not, write to the Free Software
896
edbe5c3717f9 Update licensing information: The FSF changed postal address.
diego
parents: 887
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
21 */
3286
6f61c3b36632 Use full path for #includes from another directory.
diego
parents: 3274
diff changeset
22
6439
4053f191ae61 move dnxhd demuxer to its own file
aurel
parents: 6438
diff changeset
23 #include "libavutil/intreadwrite.h"
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
24 #include "avformat.h"
6448
4775a49a6045 split raw.c into rawdec.c and rawenc.c
aurel
parents: 6439
diff changeset
25 #include "rawdec.h"
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
26
4004
677bcb3b65cd raw dnxhd de/muxer
bcoudurier
parents: 3995
diff changeset
27 static int dnxhd_probe(AVProbeData *p)
677bcb3b65cd raw dnxhd de/muxer
bcoudurier
parents: 3995
diff changeset
28 {
677bcb3b65cd raw dnxhd de/muxer
bcoudurier
parents: 3995
diff changeset
29 static const uint8_t header[] = {0x00,0x00,0x02,0x80,0x01};
5184
2d15ea28c450 Make dnxhd probe more strict, fail if we detect values in header that would
reimar
parents: 5183
diff changeset
30 int w, h, compression_id;
2d15ea28c450 Make dnxhd probe more strict, fail if we detect values in header that would
reimar
parents: 5183
diff changeset
31 if (p->buf_size < 0x2c)
2d15ea28c450 Make dnxhd probe more strict, fail if we detect values in header that would
reimar
parents: 5183
diff changeset
32 return 0;
2d15ea28c450 Make dnxhd probe more strict, fail if we detect values in header that would
reimar
parents: 5183
diff changeset
33 if (memcmp(p->buf, header, 5))
4004
677bcb3b65cd raw dnxhd de/muxer
bcoudurier
parents: 3995
diff changeset
34 return 0;
5184
2d15ea28c450 Make dnxhd probe more strict, fail if we detect values in header that would
reimar
parents: 5183
diff changeset
35 h = AV_RB16(p->buf + 0x18);
2d15ea28c450 Make dnxhd probe more strict, fail if we detect values in header that would
reimar
parents: 5183
diff changeset
36 w = AV_RB16(p->buf + 0x1a);
2d15ea28c450 Make dnxhd probe more strict, fail if we detect values in header that would
reimar
parents: 5183
diff changeset
37 if (!w || !h)
2d15ea28c450 Make dnxhd probe more strict, fail if we detect values in header that would
reimar
parents: 5183
diff changeset
38 return 0;
2d15ea28c450 Make dnxhd probe more strict, fail if we detect values in header that would
reimar
parents: 5183
diff changeset
39 compression_id = AV_RB32(p->buf + 0x28);
2d15ea28c450 Make dnxhd probe more strict, fail if we detect values in header that would
reimar
parents: 5183
diff changeset
40 if (compression_id < 1237 || compression_id > 1253)
2d15ea28c450 Make dnxhd probe more strict, fail if we detect values in header that would
reimar
parents: 5183
diff changeset
41 return 0;
2d15ea28c450 Make dnxhd probe more strict, fail if we detect values in header that would
reimar
parents: 5183
diff changeset
42 return AVPROBE_SCORE_MAX;
4004
677bcb3b65cd raw dnxhd de/muxer
bcoudurier
parents: 3995
diff changeset
43 }
677bcb3b65cd raw dnxhd de/muxer
bcoudurier
parents: 3995
diff changeset
44
677bcb3b65cd raw dnxhd de/muxer
bcoudurier
parents: 3995
diff changeset
45 AVInputFormat dnxhd_demuxer = {
677bcb3b65cd raw dnxhd de/muxer
bcoudurier
parents: 3995
diff changeset
46 "dnxhd",
677bcb3b65cd raw dnxhd de/muxer
bcoudurier
parents: 3995
diff changeset
47 NULL_IF_CONFIG_SMALL("raw DNxHD (SMPTE VC-3)"),
677bcb3b65cd raw dnxhd de/muxer
bcoudurier
parents: 3995
diff changeset
48 0,
677bcb3b65cd raw dnxhd de/muxer
bcoudurier
parents: 3995
diff changeset
49 dnxhd_probe,
6430
d3a51b32b769 move ingenient demuxer to its own file
aurel
parents: 6429
diff changeset
50 ff_raw_video_read_header,
4610
41542d2edcf4 Separate the raw FLAC demuxer from raw.c and put in a new file,
jbr
parents: 4577
diff changeset
51 ff_raw_read_partial_packet,
4004
677bcb3b65cd raw dnxhd de/muxer
bcoudurier
parents: 3995
diff changeset
52 .flags= AVFMT_GENERIC_INDEX,
677bcb3b65cd raw dnxhd de/muxer
bcoudurier
parents: 3995
diff changeset
53 .value = CODEC_ID_DNXHD,
677bcb3b65cd raw dnxhd de/muxer
bcoudurier
parents: 3995
diff changeset
54 };