FFmpeg  4.4
asf.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2000, 2001 Fabrice Bellard
3  *
4  * This file is part of FFmpeg.
5  *
6  * FFmpeg is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * FFmpeg is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with FFmpeg; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 
21 #ifndef AVFORMAT_ASF_H
22 #define AVFORMAT_ASF_H
23 
24 #include <stdint.h>
25 #include "avformat.h"
26 #include "metadata.h"
27 #include "riff.h"
28 
29 typedef enum ASFDataType {
32  ASF_BOOL = 2,
33  ASF_DWORD = 3,
34  ASF_QWORD = 4,
35  ASF_WORD = 5,
36  ASF_GUID = 6,
38 
39 typedef struct ASFMainHeader {
40  ff_asf_guid guid; ///< generated by client computer
41  uint64_t file_size; /**< in bytes
42  * invalid if broadcasting */
43  uint64_t create_time; /**< time of creation, in 100-nanosecond units since 1.1.1601
44  * invalid if broadcasting */
45  uint64_t play_time; /**< play time, in 100-nanosecond units
46  * invalid if broadcasting */
47  uint64_t send_time; /**< time to send file, in 100-nanosecond units
48  * invalid if broadcasting (could be ignored) */
49  uint32_t preroll; /**< timestamp of the first packet, in milliseconds
50  * if nonzero - subtract from time */
51  uint32_t ignore; ///< preroll is 64 bits - but let's just ignore it
52  uint32_t flags; /**< 0x01 - broadcast
53  * 0x02 - seekable
54  * rest is reserved should be 0 */
55  uint32_t min_pktsize; /**< size of a data packet
56  * invalid if broadcasting */
57  uint32_t max_pktsize; /**< shall be the same as for min_pktsize
58  * invalid if broadcasting */
59  uint32_t max_bitrate; /**< bandwidth of stream in bps
60  * should be the sum of bitrates of the
61  * individual media streams */
63 
64 
65 typedef struct ASFIndex {
66  uint32_t packet_number;
67  uint16_t packet_count;
68  uint64_t send_time;
69  uint64_t offset;
70 } ASFIndex;
71 
72 extern const ff_asf_guid ff_asf_header;
73 extern const ff_asf_guid ff_asf_file_header;
76 extern const ff_asf_guid ff_asf_audio_stream;
78 extern const ff_asf_guid ff_asf_video_stream;
79 extern const ff_asf_guid ff_asf_jfif_media;
85 extern const ff_asf_guid ff_asf_data_header;
86 extern const ff_asf_guid ff_asf_head1_guid;
87 extern const ff_asf_guid ff_asf_head2_guid;
95 extern const ff_asf_guid ff_asf_reserved_4;
96 extern const ff_asf_guid ff_asf_my_guid;
104 
105 extern const AVMetadataConv ff_asf_metadata_conv[];
106 
107 #define ASF_PACKET_FLAG_ERROR_CORRECTION_PRESENT 0x80 //1000 0000
108 
109 
110 // ASF data packet structure
111 // =========================
112 //
113 //
114 // -----------------------------------
115 // | Error Correction Data | Optional
116 // -----------------------------------
117 // | Payload Parsing Information (PPI) |
118 // -----------------------------------
119 // | Payload Data |
120 // -----------------------------------
121 // | Padding Data |
122 // -----------------------------------
123 
124 
125 // PPI_FLAG - Payload parsing information flags
126 #define ASF_PPI_FLAG_MULTIPLE_PAYLOADS_PRESENT 1
127 
128 #define ASF_PPI_FLAG_SEQUENCE_FIELD_IS_BYTE 0x02 //0000 0010
129 #define ASF_PPI_FLAG_SEQUENCE_FIELD_IS_WORD 0x04 //0000 0100
130 #define ASF_PPI_FLAG_SEQUENCE_FIELD_IS_DWORD 0x06 //0000 0110
131 #define ASF_PPI_MASK_SEQUENCE_FIELD_SIZE 0x06 //0000 0110
132 
133 #define ASF_PPI_FLAG_PADDING_LENGTH_FIELD_IS_BYTE 0x08 //0000 1000
134 #define ASF_PPI_FLAG_PADDING_LENGTH_FIELD_IS_WORD 0x10 //0001 0000
135 #define ASF_PPI_FLAG_PADDING_LENGTH_FIELD_IS_DWORD 0x18 //0001 1000
136 #define ASF_PPI_MASK_PADDING_LENGTH_FIELD_SIZE 0x18 //0001 1000
137 
138 #define ASF_PPI_FLAG_PACKET_LENGTH_FIELD_IS_BYTE 0x20 //0010 0000
139 #define ASF_PPI_FLAG_PACKET_LENGTH_FIELD_IS_WORD 0x40 //0100 0000
140 #define ASF_PPI_FLAG_PACKET_LENGTH_FIELD_IS_DWORD 0x60 //0110 0000
141 #define ASF_PPI_MASK_PACKET_LENGTH_FIELD_SIZE 0x60 //0110 0000
142 
143 // PL_FLAG - Payload flags
144 #define ASF_PL_FLAG_REPLICATED_DATA_LENGTH_FIELD_IS_BYTE 0x01 //0000 0001
145 #define ASF_PL_FLAG_REPLICATED_DATA_LENGTH_FIELD_IS_WORD 0x02 //0000 0010
146 #define ASF_PL_FLAG_REPLICATED_DATA_LENGTH_FIELD_IS_DWORD 0x03 //0000 0011
147 #define ASF_PL_MASK_REPLICATED_DATA_LENGTH_FIELD_SIZE 0x03 //0000 0011
148 
149 #define ASF_PL_FLAG_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_IS_BYTE 0x04 //0000 0100
150 #define ASF_PL_FLAG_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_IS_WORD 0x08 //0000 1000
151 #define ASF_PL_FLAG_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_IS_DWORD 0x0c //0000 1100
152 #define ASF_PL_MASK_OFFSET_INTO_MEDIA_OBJECT_LENGTH_FIELD_SIZE 0x0c //0000 1100
153 
154 #define ASF_PL_FLAG_MEDIA_OBJECT_NUMBER_LENGTH_FIELD_IS_BYTE 0x10 //0001 0000
155 #define ASF_PL_FLAG_MEDIA_OBJECT_NUMBER_LENGTH_FIELD_IS_WORD 0x20 //0010 0000
156 #define ASF_PL_FLAG_MEDIA_OBJECT_NUMBER_LENGTH_FIELD_IS_DWORD 0x30 //0011 0000
157 #define ASF_PL_MASK_MEDIA_OBJECT_NUMBER_LENGTH_FIELD_SIZE 0x30 //0011 0000
158 
159 #define ASF_PL_FLAG_STREAM_NUMBER_LENGTH_FIELD_IS_BYTE 0x40 //0100 0000
160 #define ASF_PL_MASK_STREAM_NUMBER_LENGTH_FIELD_SIZE 0xc0 //1100 0000
161 
162 #define ASF_PL_FLAG_PAYLOAD_LENGTH_FIELD_IS_BYTE 0x40 //0100 0000
163 #define ASF_PL_FLAG_PAYLOAD_LENGTH_FIELD_IS_WORD 0x80 //1000 0000
164 #define ASF_PL_MASK_PAYLOAD_LENGTH_FIELD_SIZE 0xc0 //1100 0000
165 
166 #define ASF_PL_FLAG_KEY_FRAME 0x80 //1000 0000
167 
168 #endif /* AVFORMAT_ASF_H */
const ff_asf_guid ff_asf_video_conceal_none
Definition: asf.c:55
const ff_asf_guid ff_asf_codec_comment1_header
Definition: asf.c:70
const ff_asf_guid ff_asf_mutex_language
Definition: asf.c:148
const ff_asf_guid ff_asf_video_stream
Definition: asf.c:47
const ff_asf_guid ff_asf_ext_stream_header
Definition: asf.c:35
const AVMetadataConv ff_asf_metadata_conv[]
Definition: asf.c:153
const ff_asf_guid ff_asf_stream_header
Definition: asf.c:31
const ff_asf_guid ff_asf_extended_stream_properties_object
Definition: asf.c:140
const ff_asf_guid ff_asf_command_stream
Definition: asf.c:59
const ff_asf_guid ff_asf_ext_stream_audio_stream
Definition: asf.c:98
const ff_asf_guid ff_asf_audio_conceal_spread
Definition: asf.c:43
const ff_asf_guid ff_asf_language_guid
Definition: asf.c:124
const ff_asf_guid ff_asf_group_mutual_exclusion_object
Definition: asf.c:144
const ff_asf_guid ff_asf_header
Definition: asf.c:23
const ff_asf_guid ff_asf_audio_stream
Definition: asf.c:39
const ff_asf_guid ff_asf_simple_index_header
Definition: asf.c:90
const ff_asf_guid ff_asf_ext_stream_embed_stream_header
Definition: asf.c:94
const ff_asf_guid ff_asf_content_encryption
Definition: asf.c:128
const ff_asf_guid ff_asf_extended_content_header
Definition: asf.c:86
const ff_asf_guid ff_asf_reserved_4
Definition: asf.c:114
const ff_asf_guid ff_asf_head1_guid
Definition: asf.c:78
const ff_asf_guid ff_asf_head2_guid
Definition: asf.c:82
const ff_asf_guid ff_asf_marker_header
Definition: asf.c:110
const ff_asf_guid ff_asf_metadata_library_header
Definition: asf.c:106
const ff_asf_guid ff_asf_data_header
Definition: asf.c:74
const ff_asf_guid ff_asf_jfif_media
Definition: asf.c:51
const ff_asf_guid ff_asf_digital_signature
Definition: asf.c:136
const ff_asf_guid ff_asf_ext_content_encryption
Definition: asf.c:132
const ff_asf_guid ff_asf_codec_comment_header
Definition: asf.c:67
const ff_asf_guid ff_asf_my_guid
Definition: asf.c:120
const ff_asf_guid ff_asf_file_header
Definition: asf.c:27
const ff_asf_guid ff_asf_comment_header
Definition: asf.c:63
ASFDataType
Definition: asf.h:29
@ ASF_UNICODE
Definition: asf.h:30
@ ASF_BOOL
Definition: asf.h:32
@ ASF_QWORD
Definition: asf.h:34
@ ASF_BYTE_ARRAY
Definition: asf.h:31
@ ASF_DWORD
Definition: asf.h:33
@ ASF_WORD
Definition: asf.h:35
@ ASF_GUID
Definition: asf.h:36
const ff_asf_guid ff_asf_metadata_header
Definition: asf.c:102
Main libavformat public API header.
internal metadata API header see avformat.h or the public API!
internal header for RIFF based (de)muxers do NOT include this in end user applications
uint8_t ff_asf_guid[16]
Definition: riff.h:96
Definition: asf.h:65
uint16_t packet_count
Definition: asf.h:67
uint32_t packet_number
Definition: asf.h:66
uint64_t send_time
Definition: asf.h:68
uint64_t offset
Definition: asf.h:69
uint64_t create_time
time of creation, in 100-nanosecond units since 1.1.1601 invalid if broadcasting
Definition: asf.h:43
uint32_t min_pktsize
size of a data packet invalid if broadcasting
Definition: asf.h:55
uint32_t ignore
preroll is 64 bits - but let's just ignore it
Definition: asf.h:51
ff_asf_guid guid
generated by client computer
Definition: asf.h:40
uint32_t max_pktsize
shall be the same as for min_pktsize invalid if broadcasting
Definition: asf.h:57
uint64_t send_time
time to send file, in 100-nanosecond units invalid if broadcasting (could be ignored)
Definition: asf.h:47
uint32_t max_bitrate
bandwidth of stream in bps should be the sum of bitrates of the individual media streams
Definition: asf.h:59
uint32_t flags
0x01 - broadcast 0x02 - seekable rest is reserved should be 0
Definition: asf.h:52
uint64_t file_size
in bytes invalid if broadcasting
Definition: asf.h:41
uint64_t play_time
play time, in 100-nanosecond units invalid if broadcasting
Definition: asf.h:45
uint32_t preroll
timestamp of the first packet, in milliseconds if nonzero - subtract from time
Definition: asf.h:49