|
- @chapter Bitstream Filters
- @c man begin BITSTREAM FILTERS
-
- When you configure your Libav build, all the supported bitstream
- filters are enabled by default. You can list all available ones using
- the configure option @code{--list-bsfs}.
-
- You can disable all the bitstream filters using the configure option
- @code{--disable-bsfs}, and selectively enable any bitstream filter using
- the option @code{--enable-bsf=BSF}, or you can disable a particular
- bitstream filter using the option @code{--disable-bsf=BSF}.
-
- The option @code{-bsfs} of the av* tools will display the list of
- all the supported bitstream filters included in your build.
-
- Below is a description of the currently available bitstream filters.
-
- @section aac_adtstoasc
-
- @section chomp
-
- @section dump_extradata
-
- @section extract_extradata
-
- Extract the in-band extradata.
-
- Certain codecs allow the long-term headers (e.g. MPEG-2 sequence headers,
- or H.264/HEVC (VPS/)SPS/PPS) to be transmitted either "in-band" (i.e. as a part
- of the bitstream containing the coded frames) or "out of band" (e.g. on the
- container level). This latter form is called "extradata" in Libav terminology.
-
- This bitstream filter detects the in-band headers and makes them available as
- extradata.
-
- @table @option
- @item remove
- When this option is enabled, the long-term headers are removed from the
- bitstream after extraction.
- @end table
-
- @section h264_metadata
-
- Modify metadata embedded in an H.264 stream.
-
- @table @option
- @item aud
- Insert or remove AUD NAL units in all access units of the stream.
-
- @table @samp
- @item insert
- @item remove
- @end table
-
- @item sample_aspect_ratio
- Set the sample aspect ratio of the stream in the VUI parameters.
-
- @item video_format
- @item video_full_range_flag
- Set the video format in the stream (see H.264 section E.2.1 and
- table E-2).
-
- @item colour_primaries
- @item transfer_characteristics
- @item matrix_coefficients
- Set the colour description in the stream (see H.264 section E.2.1
- and tables E-3, E-4 and E-5).
-
- @item chroma_sample_loc_type
- Set the chroma sample location in the stream (see H.264 section
- E.2.1 and figure E-1).
-
- @item tick_rate
- Set the tick rate (num_units_in_tick / time_scale) in the VUI
- parameters. This is the smallest time unit representable in the
- stream, and in many cases represents the field rate of the stream
- (double the frame rate).
- @item fixed_frame_rate_flag
- Set whether the stream has fixed framerate - typically this indicates
- that the framerate is exactly half the tick rate, but the exact
- meaning is dependent on interlacing and the picture structure (see
- H.264 section E.2.1 and table E-6).
-
- @item crop_left
- @item crop_right
- @item crop_top
- @item crop_bottom
- Set the frame cropping offsets in the SPS. These values will replace
- the current ones if the stream is already cropped.
-
- These fields are set in pixels. Note that some sizes may not be
- representable if the chroma is subsampled or the stream is interlaced
- (see H.264 section 7.4.2.1.1).
-
- @item sei_user_data
- Insert a string as SEI unregistered user data. The argument must
- be of the form @emph{UUID+string}, where the UUID is as hex digits
- possibly separated by hyphens, and the string can be anything.
-
- For example, @samp{086f3693-b7b3-4f2c-9653-21492feee5b8+hello} will
- insert the string ``hello'' associated with the given UUID.
-
- @end table
-
- @section h264_mp4toannexb
-
- @section h264_redundant_pps
-
- This applies a specific fixup to some Bluray streams which contain
- redundant PPSs modifying irrelevant parameters of the stream which
- confuse other transformations which require correct extradata.
-
- A new single global PPS is created, and all of the redundant PPSs
- within the stream are removed.
-
- @section hevc_metadata
-
- Modify metadata embedded in an HEVC stream.
-
- @table @option
- @item aud
- Insert or remove AUD NAL units in all access units of the stream.
-
- @table @samp
- @item insert
- @item remove
- @end table
-
- @item sample_aspect_ratio
- Set the sample aspect ratio in the stream in the VUI parameters.
-
- @item video_format
- @item video_full_range_flag
- Set the video format in the stream (see H.265 section E.3.1 and
- table E.2).
-
- @item colour_primaries
- @item transfer_characteristics
- @item matrix_coefficients
- Set the colour description in the stream (see H.265 section E.3.1
- and tables E.3, E.4 and E.5).
-
- @item chroma_sample_loc_type
- Set the chroma sample location in the stream (see H.265 section
- E.3.1 and figure E.1).
-
- @item tick_rate
- Set the tick rate in the VPS and VUI parameters (num_units_in_tick /
- time_scale). Combined with @option{num_ticks_poc_diff_one}, this can
- set a constant framerate in the stream. Note that it is likely to be
- overridden by container parameters when the stream is in a container.
-
- @item num_ticks_poc_diff_one
- Set poc_proportional_to_timing_flag in VPS and VUI and use this value
- to set num_ticks_poc_diff_one_minus1 (see H.265 sections 7.4.3.1 and
- E.3.1). Ignored if @option{tick_rate} is not also set.
-
- @item crop_left
- @item crop_right
- @item crop_top
- @item crop_bottom
- Set the conformance window cropping offsets in the SPS. These values
- will replace the current ones if the stream is already cropped.
-
- These fields are set in pixels. Note that some sizes may not be
- representable if the chroma is subsampled (H.265 section 7.4.3.2.1).
-
- @end table
-
- @section imx_dump_header
-
- @section mjpeg2jpeg
-
- Convert MJPEG/AVI1 packets to full JPEG/JFIF packets.
-
- MJPEG is a video codec wherein each video frame is essentially a
- JPEG image. The individual frames can be extracted without loss,
- e.g. by
-
- @example
- avconv -i ../some_mjpeg.avi -c:v copy frames_%d.jpg
- @end example
-
- Unfortunately, these chunks are incomplete JPEG images, because
- they lack the DHT segment required for decoding. Quoting from
- @url{http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml}:
-
- Avery Lee, writing in the rec.video.desktop newsgroup in 2001,
- commented that "MJPEG, or at least the MJPEG in AVIs having the
- MJPG fourcc, is restricted JPEG with a fixed -- and *omitted* --
- Huffman table. The JPEG must be YCbCr colorspace, it must be 4:2:2,
- and it must use basic Huffman encoding, not arithmetic or
- progressive. . . . You can indeed extract the MJPEG frames and
- decode them with a regular JPEG decoder, but you have to prepend
- the DHT segment to them, or else the decoder won't have any idea
- how to decompress the data. The exact table necessary is given in
- the OpenDML spec."
-
- This bitstream filter patches the header of frames extracted from an MJPEG
- stream (carrying the AVI1 header ID and lacking a DHT segment) to
- produce fully qualified JPEG images.
-
- @example
- avconv -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg
- exiftran -i -9 frame*.jpg
- avconv -i frame_%d.jpg -c:v copy rotated.avi
- @end example
-
- @section mjpega_dump_header
-
- @section movsub
-
- @section mp3_header_compress
-
- @section mp3_header_decompress
-
- @section noise
-
- @section null
- This bitstream filter passes the packets through unchanged.
-
- @section remove_extradata
-
- @section trace_headers
-
- Log trace output containing all syntax elements in the coded stream
- headers (everything above the level of individual coded blocks).
- This can be useful for debugging low-level stream issues.
-
- Supports H.264, H.265 and MPEG-2.
-
- @section vp9_superframe
-
- Combine VP9 frames into superframes.
-
- @section vp9_superframe_split
-
- Split VP9 superframes into single frames.
-
- @section vp9_raw_reorder
-
- Given a VP9 stream with correct timestamps but possibly out of order,
- insert additional show-existing-frame packets to correct the ordering.
-
- @c man end BITSTREAM FILTERS
|