Mercurial > libavformat.hg
annotate mpeg.h @ 5984:55c714a8fb00 libavformat
Make the IFF demuxer a little more standards-compliant, e.g. respect the size
fields of common media header chunks (these can have different sizes depending
on the type of IFF file you read), better handle odd sizes (like RIFF, every
field is padded to word) and handle headerchunks after the BODY chunk.
Patch by Sebastian Vater <cdgs.basty googlemail com>.
author | rbultje |
---|---|
date | Tue, 27 Apr 2010 14:03:47 +0000 |
parents | 77e0c7511d41 |
children |
rev | line source |
---|---|
0 | 1 /* |
2176
50322a49fa2b
split mpeg ps and variants muxer and demuxer, I'll clean more in a few minutes, lpcm freq tab is left static const in mpeg.h for now until we have more code in common
bcoudurier
parents:
2164
diff
changeset
|
2 * MPEG1/2 muxer and demuxer common defines |
4251
77e0c7511d41
cosmetics: Remove pointless period after copyright statement non-sentences.
diego
parents:
3852
diff
changeset
|
3 * Copyright (c) 2000, 2001, 2002 Fabrice Bellard |
0 | 4 * |
1358
0899bfe4105c
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
1332
diff
changeset
|
5 * This file is part of FFmpeg. |
0899bfe4105c
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
1332
diff
changeset
|
6 * |
0899bfe4105c
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
1332
diff
changeset
|
7 * FFmpeg is free software; you can redistribute it and/or |
0 | 8 * modify it under the terms of the GNU Lesser General Public |
9 * 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:
1332
diff
changeset
|
10 * version 2.1 of the License, or (at your option) any later version. |
0 | 11 * |
1358
0899bfe4105c
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
1332
diff
changeset
|
12 * FFmpeg is distributed in the hope that it will be useful, |
0 | 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
15 * Lesser General Public License for more details. | |
16 * | |
17 * 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:
1332
diff
changeset
|
18 * License along with FFmpeg; if not, write to the Free Software |
896
edbe5c3717f9
Update licensing information: The FSF changed postal address.
diego
parents:
885
diff
changeset
|
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
0 | 20 */ |
21 | |
3852 | 22 #ifndef AVFORMAT_MPEG_H |
23 #define AVFORMAT_MPEG_H | |
0 | 24 |
3108 | 25 #include <stdint.h> |
3286 | 26 #include "libavutil/intreadwrite.h" |
3108 | 27 |
0 | 28 #define PACK_START_CODE ((unsigned int)0x000001ba) |
29 #define SYSTEM_HEADER_START_CODE ((unsigned int)0x000001bb) | |
30 #define SEQUENCE_END_CODE ((unsigned int)0x000001b7) | |
31 #define PACKET_START_CODE_MASK ((unsigned int)0xffffff00) | |
32 #define PACKET_START_CODE_PREFIX ((unsigned int)0x00000100) | |
33 #define ISO_11172_END_CODE ((unsigned int)0x000001b9) | |
885 | 34 |
0 | 35 /* mpeg2 */ |
36 #define PROGRAM_STREAM_MAP 0x1bc | |
37 #define PRIVATE_STREAM_1 0x1bd | |
38 #define PADDING_STREAM 0x1be | |
39 #define PRIVATE_STREAM_2 0x1bf | |
40 | |
41 #define AUDIO_ID 0xc0 | |
42 #define VIDEO_ID 0xe0 | |
336 | 43 #define AC3_ID 0x80 |
496
112057e05179
libdts support by (Benjamin Zores <ben at geexbox dot org>)
michael
parents:
483
diff
changeset
|
44 #define DTS_ID 0x8a |
336 | 45 #define LPCM_ID 0xa0 |
789 | 46 #define SUB_ID 0x20 |
0 | 47 |
722 | 48 #define STREAM_TYPE_VIDEO_MPEG1 0x01 |
49 #define STREAM_TYPE_VIDEO_MPEG2 0x02 | |
50 #define STREAM_TYPE_AUDIO_MPEG1 0x03 | |
51 #define STREAM_TYPE_AUDIO_MPEG2 0x04 | |
52 #define STREAM_TYPE_PRIVATE_SECTION 0x05 | |
53 #define STREAM_TYPE_PRIVATE_DATA 0x06 | |
54 #define STREAM_TYPE_AUDIO_AAC 0x0f | |
55 #define STREAM_TYPE_VIDEO_MPEG4 0x10 | |
56 #define STREAM_TYPE_VIDEO_H264 0x1b | |
57 | |
58 #define STREAM_TYPE_AUDIO_AC3 0x81 | |
59 #define STREAM_TYPE_AUDIO_DTS 0x8a | |
60 | |
356
72c7cf2f3a7a
CONFIG_ENCODERS fix by (Ronald Bultje <rbultje at ronald dot bitfreak dot net>)
michael
parents:
355
diff
changeset
|
61 static const int lpcm_freq_tab[4] = { 48000, 96000, 44100, 32000 }; |
72c7cf2f3a7a
CONFIG_ENCODERS fix by (Ronald Bultje <rbultje at ronald dot bitfreak dot net>)
michael
parents:
355
diff
changeset
|
62 |
2906
e5dfe3c96f3b
Move parsing of MPEG-PES timestamp to mpeg.h (as an inline function) so it
ivo
parents:
2620
diff
changeset
|
63 /** |
e5dfe3c96f3b
Move parsing of MPEG-PES timestamp to mpeg.h (as an inline function) so it
ivo
parents:
2620
diff
changeset
|
64 * Parse MPEG-PES five-byte timestamp |
e5dfe3c96f3b
Move parsing of MPEG-PES timestamp to mpeg.h (as an inline function) so it
ivo
parents:
2620
diff
changeset
|
65 */ |
e5dfe3c96f3b
Move parsing of MPEG-PES timestamp to mpeg.h (as an inline function) so it
ivo
parents:
2620
diff
changeset
|
66 static inline int64_t ff_parse_pes_pts(uint8_t *buf) { |
e5dfe3c96f3b
Move parsing of MPEG-PES timestamp to mpeg.h (as an inline function) so it
ivo
parents:
2620
diff
changeset
|
67 return (int64_t)(*buf & 0x0e) << 29 | |
e5dfe3c96f3b
Move parsing of MPEG-PES timestamp to mpeg.h (as an inline function) so it
ivo
parents:
2620
diff
changeset
|
68 (AV_RB16(buf+1) >> 1) << 15 | |
e5dfe3c96f3b
Move parsing of MPEG-PES timestamp to mpeg.h (as an inline function) so it
ivo
parents:
2620
diff
changeset
|
69 AV_RB16(buf+3) >> 1; |
e5dfe3c96f3b
Move parsing of MPEG-PES timestamp to mpeg.h (as an inline function) so it
ivo
parents:
2620
diff
changeset
|
70 } |
e5dfe3c96f3b
Move parsing of MPEG-PES timestamp to mpeg.h (as an inline function) so it
ivo
parents:
2620
diff
changeset
|
71 |
3852 | 72 #endif /* AVFORMAT_MPEG_H */ |