@@ -112,11 +112,12 @@ type jsonAVFormatContext struct {
112
112
Input * AVInputFormat `json:"input_format,omitempty"`
113
113
Output * AVOutputFormat `json:"output_format,omitempty"`
114
114
Url string `json:"url,omitempty"`
115
- NumStreams uint `json:"num_streams ,omitempty"`
115
+ NumStreams uint `json:"nb_streams ,omitempty"`
116
116
Streams []* AVStream `json:"streams,omitempty"`
117
117
StartTime int64 `json:"start_time,omitempty"`
118
118
Duration int64 `json:"duration,omitempty"`
119
119
BitRate int64 `json:"bit_rate,omitempty"`
120
+ PacketSize uint `json:"packet_size,omitempty"`
120
121
Flags AVFormatFlag `json:"flags,omitempty"`
121
122
}
122
123
@@ -131,6 +132,7 @@ func (ctx *AVFormatContext) MarshalJSON() ([]byte, error) {
131
132
StartTime : int64 (ctx .start_time ),
132
133
Duration : int64 (ctx .duration ),
133
134
BitRate : int64 (ctx .bit_rate ),
135
+ PacketSize : uint (ctx .packet_size ),
134
136
Flags : AVFormatFlag (ctx .flags ),
135
137
})
136
138
}
@@ -263,6 +265,83 @@ func (ctx *AVFormatContext) Duration() int64 {
263
265
////////////////////////////////////////////////////////////////////////////////
264
266
// AVFormatFlag
265
267
268
+ const (
269
+ AVFMT_FLAG_NONE AVFormatFlag = 0
270
+ AVFMT_FLAG_GENPTS AVFormatFlag = C .AVFMT_FLAG_GENPTS ///< Generate missing pts even if it requires parsing future frames.
271
+ AVFMT_FLAG_IGNIDX AVFormatFlag = C .AVFMT_FLAG_IGNIDX ///< Ignore index.
272
+ AVFMT_FLAG_NONBLOCK AVFormatFlag = C .AVFMT_FLAG_NONBLOCK ///< Do not block when reading packets from input.
273
+ AVFMT_FLAG_IGNDTS AVFormatFlag = C .AVFMT_FLAG_IGNDTS ///< Ignore DTS on frames that contain both DTS & PTS
274
+ AVFMT_FLAG_NOFILLIN AVFormatFlag = C .AVFMT_FLAG_NOFILLIN ///< Do not infer any values from other values, just return what is stored in the container
275
+ AVFMT_FLAG_NOPARSE AVFormatFlag = C .AVFMT_FLAG_NOPARSE ///< Do not use AVParsers, you also must set AVFMT_FLAG_NOFILLIN as the fillin code works on frames and no parsing -> no frames. Also seeking to frames can not work if parsing to find frame boundaries has been disabled
276
+ AVFMT_FLAG_NOBUFFER AVFormatFlag = C .AVFMT_FLAG_NOBUFFER ///< Do not buffer frames when possible
277
+ AVFMT_FLAG_CUSTOM_IO AVFormatFlag = C .AVFMT_FLAG_CUSTOM_IO ///< The caller has supplied a custom AVIOContext, don't avio_close() it.
278
+ AVFMT_FLAG_DISCARD_CORRUPT AVFormatFlag = C .AVFMT_FLAG_DISCARD_CORRUPT ///< Discard frames marked corrupted
279
+ AVFMT_FLAG_FLUSH_PACKETS AVFormatFlag = C .AVFMT_FLAG_FLUSH_PACKETS ///< Flush the AVIOContext every packet.
280
+ AVFMT_FLAG_BITEXACT AVFormatFlag = C .AVFMT_FLAG_BITEXACT // When muxing, try to avoid writing any random/volatile data to the output.
281
+ AVFMT_FLAG_SORT_DTS AVFormatFlag = C .AVFMT_FLAG_SORT_DTS ///< try to interleave outputted packets by dts (using this flag can slow demuxing down)
282
+ AVFMT_FLAG_FAST_SEEK AVFormatFlag = C .AVFMT_FLAG_FAST_SEEK ///< Enable fast, but inaccurate seeks for some formats
283
+ AVFMT_FLAG_SHORTEST AVFormatFlag = C .AVFMT_FLAG_SHORTEST ///< Stop muxing when the shortest stream stops.
284
+ AVFMT_FLAG_AUTO_BSF AVFormatFlag = C .AVFMT_FLAG_AUTO_BSF ///< Add bitstream filters as requested by the muxer
285
+ AVFMT_FLAG_MIN = AVFMT_FLAG_GENPTS
286
+ AVFMT_FLAG_MAX = AVFMT_FLAG_AUTO_BSF
287
+ )
288
+
289
+ func (f AVFormatFlag ) FlagString () string {
290
+ switch f {
291
+ case AVFMT_FLAG_NONE :
292
+ return "AVFMT_FLAG_NONE"
293
+ case AVFMT_FLAG_GENPTS :
294
+ return "AVFMT_FLAG_GENPTS"
295
+ case AVFMT_FLAG_IGNIDX :
296
+ return "AVFMT_FLAG_IGNIDX"
297
+ case AVFMT_FLAG_NONBLOCK :
298
+ return "AVFMT_FLAG_NONBLOCK"
299
+ case AVFMT_FLAG_IGNDTS :
300
+ return "AVFMT_FLAG_IGNDTS"
301
+ case AVFMT_FLAG_NOFILLIN :
302
+ return "AVFMT_FLAG_NOFILLIN"
303
+ case AVFMT_FLAG_NOPARSE :
304
+ return "AVFMT_FLAG_NOPARSE"
305
+ case AVFMT_FLAG_NOBUFFER :
306
+ return "AVFMT_FLAG_NOBUFFER"
307
+ case AVFMT_FLAG_CUSTOM_IO :
308
+ return "AVFMT_FLAG_CUSTOM_IO"
309
+ case AVFMT_FLAG_DISCARD_CORRUPT :
310
+ return "AVFMT_FLAG_DISCARD_CORRUPT"
311
+ case AVFMT_FLAG_FLUSH_PACKETS :
312
+ return "AVFMT_FLAG_FLUSH_PACKETS"
313
+ case AVFMT_FLAG_BITEXACT :
314
+ return "AVFMT_FLAG_BITEXACT"
315
+ case AVFMT_FLAG_SORT_DTS :
316
+ return "AVFMT_FLAG_SORT_DTS"
317
+ case AVFMT_FLAG_FAST_SEEK :
318
+ return "AVFMT_FLAG_FAST_SEEK"
319
+ case AVFMT_FLAG_SHORTEST :
320
+ return "AVFMT_FLAG_SHORTEST"
321
+ case AVFMT_FLAG_AUTO_BSF :
322
+ return "AVFMT_FLAG_AUTO_BSF"
323
+ default :
324
+ return fmt .Sprintf ("AVFormatFlag(0x%06X)" , int (f ))
325
+ }
326
+ }
327
+
328
+ func (f AVFormatFlag ) MarshalJSON () ([]byte , error ) {
329
+ return json .Marshal (f .String ())
330
+ }
331
+
332
+ func (f AVFormatFlag ) String () string {
333
+ if f == AVFMT_FLAG_NONE {
334
+ return f .FlagString ()
335
+ }
336
+ str := ""
337
+ for i := AVFMT_FLAG_MIN ; i <= AVFMT_FLAG_MAX ; i <<= 1 {
338
+ if f & i != 0 {
339
+ str += "|" + i .FlagString ()
340
+ }
341
+ }
342
+ return str [1 :]
343
+ }
344
+
266
345
func (f AVFormatFlag ) Is (flag AVFormatFlag ) bool {
267
346
return f & flag == flag
268
347
}
0 commit comments