103 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
@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_mp4toannexb
 | 
						|
 | 
						|
@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 vp9_superframe_split
 | 
						|
 | 
						|
Split VP9 superframes into single frames.
 | 
						|
 | 
						|
@c man end BITSTREAM FILTERS
 |