| @chapter Bitstream Filters |
| @c man begin BITSTREAM FILTERS |
| |
| When you configure your FFmpeg 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 ff* tools will display the list of |
| all the supported bitstream filters included in your build. |
| |
| The ff* tools have a -bsf option applied per stream, taking a |
| comma-separated list of filters, whose parameters follow the filter |
| name after a '='. |
| |
| @example |
| ffmpeg -i INPUT -c:v copy -bsf:v filter1[=opt1=str1:opt2=str2][,filter2] OUTPUT |
| @end example |
| |
| Below is a description of the currently available bitstream filters, |
| with their parameters, if any. |
| |
| @section aac_adtstoasc |
| |
| Convert MPEG-2/4 AAC ADTS to an MPEG-4 Audio Specific Configuration |
| bitstream. |
| |
| This filter creates an MPEG-4 AudioSpecificConfig from an MPEG-2/4 |
| ADTS header and removes the ADTS header. |
| |
| This filter is required for example when copying an AAC stream from a |
| raw ADTS AAC or an MPEG-TS container to MP4A-LATM, to an FLV file, or |
| to MOV/MP4 files and related formats such as 3GP or M4A. Please note |
| that it is auto-inserted for MP4A-LATM and MOV/MP4 and related formats. |
| |
| @section av1_metadata |
| |
| Modify metadata embedded in an AV1 stream. |
| |
| @table @option |
| @item td |
| Insert or remove temporal delimiter OBUs in all temporal units of the |
| stream. |
| |
| @table @samp |
| @item insert |
| Insert a TD at the beginning of every TU which does not already have one. |
| @item remove |
| Remove the TD from the beginning of every TU which has one. |
| @end table |
| |
| @item color_primaries |
| @item transfer_characteristics |
| @item matrix_coefficients |
| Set the color description fields in the stream (see AV1 section 6.4.2). |
| |
| @item color_range |
| Set the color range in the stream (see AV1 section 6.4.2; note that |
| this cannot be set for streams using BT.709 primaries, sRGB transfer |
| characteristic and identity (RGB) matrix coefficients). |
| @table @samp |
| @item tv |
| Limited range. |
| @item pc |
| Full range. |
| @end table |
| |
| @item chroma_sample_position |
| Set the chroma sample location in the stream (see AV1 section 6.4.2). |
| This can only be set for 4:2:0 streams. |
| |
| @table @samp |
| @item vertical |
| Left position (matching the default in MPEG-2 and H.264). |
| @item colocated |
| Top-left position. |
| @end table |
| |
| @item tick_rate |
| Set the tick rate (@emph{num_units_in_display_tick / time_scale}) in |
| the timing info in the sequence header. |
| @item num_ticks_per_picture |
| Set the number of ticks in each picture, to indicate that the stream |
| has a fixed framerate. Ignored if @option{tick_rate} is not also set. |
| |
| @item delete_padding |
| Deletes Padding OBUs. |
| |
| @end table |
| |
| @section chomp |
| |
| Remove zero padding at the end of a packet. |
| |
| @section dca_core |
| |
| Extract the core from a DCA/DTS stream, dropping extensions such as |
| DTS-HD. |
| |
| @section dump_extra |
| |
| Add extradata to the beginning of the filtered packets except when |
| said packets already exactly begin with the extradata that is intended |
| to be added. |
| |
| @table @option |
| @item freq |
| The additional argument specifies which packets should be filtered. |
| It accepts the values: |
| @table @samp |
| @item k |
| @item keyframe |
| add extradata to all key packets |
| |
| @item e |
| @item all |
| add extradata to all packets |
| @end table |
| @end table |
| |
| If not specified it is assumed @samp{k}. |
| |
| For example the following @command{ffmpeg} command forces a global |
| header (thus disabling individual packet headers) in the H.264 packets |
| generated by the @code{libx264} encoder, but corrects them by adding |
| the header stored in extradata to the key packets: |
| @example |
| ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts |
| @end example |
| |
| @section eac3_core |
| |
| Extract the core from a E-AC-3 stream, dropping extra channels. |
| |
| @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 FFmpeg 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 filter_units |
| |
| Remove units with types in or not in a given set from the stream. |
| |
| @table @option |
| @item pass_types |
| List of unit types or ranges of unit types to pass through while removing |
| all others. This is specified as a '|'-separated list of unit type values |
| or ranges of values with '-'. |
| |
| @item remove_types |
| Identical to @option{pass_types}, except the units in the given set |
| removed and all others passed through. |
| @end table |
| |
| Extradata is unchanged by this transformation, but note that if the stream |
| contains inline parameter sets then the output may be unusable if they are |
| removed. |
| |
| For example, to remove all non-VCL NAL units from an H.264 stream: |
| @example |
| ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=pass_types=1-5' OUTPUT |
| @end example |
| |
| To remove all AUDs, SEI and filler from an H.265 stream: |
| @example |
| ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=35|38-40' OUTPUT |
| @end example |
| |
| @section hapqa_extract |
| |
| Extract Rgb or Alpha part of an HAPQA file, without recompression, in order to create an HAPQ or an HAPAlphaOnly file. |
| |
| @table @option |
| @item texture |
| Specifies the texture to keep. |
| |
| @table @option |
| @item color |
| @item alpha |
| @end table |
| |
| @end table |
| |
| Convert HAPQA to HAPQ |
| @example |
| ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=color -tag:v HapY -metadata:s:v:0 encoder="HAPQ" hapq_file.mov |
| @end example |
| |
| Convert HAPQA to HAPAlphaOnly |
| @example |
| ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=alpha -tag:v HapA -metadata:s:v:0 encoder="HAPAlpha Only" hapalphaonly_file.mov |
| @end example |
| |
| @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 overscan_appropriate_flag |
| Set whether the stream is suitable for display using overscan |
| or not (see H.264 section E.2.1). |
| |
| @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. |
| |
| @item delete_filler |
| Deletes both filler NAL units and filler SEI messages. |
| |
| @item level |
| Set the level in the SPS. Refer to H.264 section A.3 and tables A-1 |
| to A-5. |
| |
| The argument must be the name of a level (for example, @samp{4.2}), a |
| level_idc value (for example, @samp{42}), or the special name @samp{auto} |
| indicating that the filter should attempt to guess the level from the |
| input stream properties. |
| |
| @end table |
| |
| @section h264_mp4toannexb |
| |
| Convert an H.264 bitstream from length prefixed mode to start code |
| prefixed mode (as defined in the Annex B of the ITU-T H.264 |
| specification). |
| |
| This is required by some streaming formats, typically the MPEG-2 |
| transport stream format (muxer @code{mpegts}). |
| |
| For example to remux an MP4 file containing an H.264 stream to mpegts |
| format with @command{ffmpeg}, you can use the command: |
| |
| @example |
| ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts |
| @end example |
| |
| Please note that this filter is auto-inserted for MPEG-TS (muxer |
| @code{mpegts}) and raw H.264 (muxer @code{h264}) output formats. |
| |
| @section h264_redundant_pps |
| |
| This applies a specific fixup to some Blu-ray 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). |
| |
| @item level |
| Set the level in the VPS and SPS. See H.265 section A.4 and tables |
| A.6 and A.7. |
| |
| The argument must be the name of a level (for example, @samp{5.1}), a |
| @emph{general_level_idc} value (for example, @samp{153} for level 5.1), |
| or the special name @samp{auto} indicating that the filter should |
| attempt to guess the level from the input stream properties. |
| |
| @end table |
| |
| @section hevc_mp4toannexb |
| |
| Convert an HEVC/H.265 bitstream from length prefixed mode to start code |
| prefixed mode (as defined in the Annex B of the ITU-T H.265 |
| specification). |
| |
| This is required by some streaming formats, typically the MPEG-2 |
| transport stream format (muxer @code{mpegts}). |
| |
| For example to remux an MP4 file containing an HEVC stream to mpegts |
| format with @command{ffmpeg}, you can use the command: |
| |
| @example |
| ffmpeg -i INPUT.mp4 -codec copy -bsf:v hevc_mp4toannexb OUTPUT.ts |
| @end example |
| |
| Please note that this filter is auto-inserted for MPEG-TS (muxer |
| @code{mpegts}) and raw HEVC/H.265 (muxer @code{h265} or |
| @code{hevc}) output formats. |
| |
| @section imxdump |
| |
| Modifies the bitstream to fit in MOV and to be usable by the Final Cut |
| Pro decoder. This filter only applies to the mpeg2video codec, and is |
| likely not needed for Final Cut Pro 7 and newer with the appropriate |
| @option{-tag:v}. |
| |
| For example, to remux 30 MB/sec NTSC IMX to MOV: |
| |
| @example |
| ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov |
| @end example |
| |
| @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 |
| ffmpeg -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 |
| ffmpeg -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg |
| exiftran -i -9 frame*.jpg |
| ffmpeg -i frame_%d.jpg -c:v copy rotated.avi |
| @end example |
| |
| @section mjpegadump |
| |
| Add an MJPEG A header to the bitstream, to enable decoding by |
| Quicktime. |
| |
| @anchor{mov2textsub} |
| @section mov2textsub |
| |
| Extract a representable text file from MOV subtitles, stripping the |
| metadata header from each subtitle packet. |
| |
| See also the @ref{text2movsub} filter. |
| |
| @section mp3decomp |
| |
| Decompress non-standard compressed MP3 audio headers. |
| |
| @section mpeg2_metadata |
| |
| Modify metadata embedded in an MPEG-2 stream. |
| |
| @table @option |
| @item display_aspect_ratio |
| Set the display aspect ratio in the stream. |
| |
| The following fixed values are supported: |
| @table @option |
| @item 4/3 |
| @item 16/9 |
| @item 221/100 |
| @end table |
| Any other value will result in square pixels being signalled instead |
| (see H.262 section 6.3.3 and table 6-3). |
| |
| @item frame_rate |
| Set the frame rate in the stream. This is constructed from a table |
| of known values combined with a small multiplier and divisor - if |
| the supplied value is not exactly representable, the nearest |
| representable value will be used instead (see H.262 section 6.3.3 |
| and table 6-4). |
| |
| @item video_format |
| Set the video format in the stream (see H.262 section 6.3.6 and |
| table 6-6). |
| |
| @item colour_primaries |
| @item transfer_characteristics |
| @item matrix_coefficients |
| Set the colour description in the stream (see H.262 section 6.3.6 |
| and tables 6-7, 6-8 and 6-9). |
| |
| @end table |
| |
| @section mpeg4_unpack_bframes |
| |
| Unpack DivX-style packed B-frames. |
| |
| DivX-style packed B-frames are not valid MPEG-4 and were only a |
| workaround for the broken Video for Windows subsystem. |
| They use more space, can cause minor AV sync issues, require more |
| CPU power to decode (unless the player has some decoded picture queue |
| to compensate the 2,0,2,0 frame per packet style) and cause |
| trouble if copied into a standard container like mp4 or mpeg-ps/ts, |
| because MPEG-4 decoders may not be able to decode them, since they are |
| not valid MPEG-4. |
| |
| For example to fix an AVI file containing an MPEG-4 stream with |
| DivX-style packed B-frames using @command{ffmpeg}, you can use the command: |
| |
| @example |
| ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi |
| @end example |
| |
| @section noise |
| |
| Damages the contents of packets or simply drops them without damaging the |
| container. Can be used for fuzzing or testing error resilience/concealment. |
| |
| Parameters: |
| @table @option |
| @item amount |
| A numeral string, whose value is related to how often output bytes will |
| be modified. Therefore, values below or equal to 0 are forbidden, and |
| the lower the more frequent bytes will be modified, with 1 meaning |
| every byte is modified. |
| @item dropamount |
| A numeral string, whose value is related to how often packets will be dropped. |
| Therefore, values below or equal to 0 are forbidden, and the lower the more |
| frequent packets will be dropped, with 1 meaning every packet is dropped. |
| @end table |
| |
| The following example applies the modification to every byte but does not drop |
| any packets. |
| @example |
| ffmpeg -i INPUT -c copy -bsf noise[=1] output.mkv |
| @end example |
| |
| @section null |
| This bitstream filter passes the packets through unchanged. |
| |
| @section pcm_rechunk |
| |
| Repacketize PCM audio to a fixed number of samples per packet or a fixed packet |
| rate per second. This is similar to the @ref{asetnsamples,,asetnsamples audio |
| filter,ffmpeg-filters} but works on audio packets instead of audio frames. |
| |
| @table @option |
| @item nb_out_samples, n |
| Set the number of samples per each output audio packet. The number is intended |
| as the number of samples @emph{per each channel}. Default value is 1024. |
| |
| @item pad, p |
| If set to 1, the filter will pad the last audio packet with silence, so that it |
| will contain the same number of samples (or roughly the same number of samples, |
| see @option{frame_rate}) as the previous ones. Default value is 1. |
| |
| @item frame_rate, r |
| This option makes the filter output a fixed number of packets per second instead |
| of a fixed number of samples per packet. If the audio sample rate is not |
| divisible by the frame rate then the number of samples will not be constant but |
| will vary slightly so that each packet will start as close to the frame |
| boundary as possible. Using this option has precedence over @option{nb_out_samples}. |
| @end table |
| |
| You can generate the well known 1602-1601-1602-1601-1602 pattern of 48kHz audio |
| for NTSC frame rate using the @option{frame_rate} option. |
| @example |
| ffmpeg -f lavfi -i sine=r=48000:d=1 -c pcm_s16le -bsf pcm_rechunk=r=30000/1001 -f framecrc - |
| @end example |
| |
| @section prores_metadata |
| |
| Modify color property metadata embedded in prores stream. |
| |
| @table @option |
| @item color_primaries |
| Set the color primaries. |
| Available values are: |
| |
| @table @samp |
| @item auto |
| Keep the same color primaries property (default). |
| |
| @item unknown |
| @item bt709 |
| @item bt470bg |
| BT601 625 |
| |
| @item smpte170m |
| BT601 525 |
| |
| @item bt2020 |
| @item smpte431 |
| DCI P3 |
| |
| @item smpte432 |
| P3 D65 |
| |
| @end table |
| |
| @item transfer_characteristics |
| Set the color transfer. |
| Available values are: |
| |
| @table @samp |
| @item auto |
| Keep the same transfer characteristics property (default). |
| |
| @item unknown |
| @item bt709 |
| BT 601, BT 709, BT 2020 |
| @item smpte2084 |
| SMPTE ST 2084 |
| @item arib-std-b67 |
| ARIB STD-B67 |
| @end table |
| |
| |
| @item matrix_coefficients |
| Set the matrix coefficient. |
| Available values are: |
| |
| @table @samp |
| @item auto |
| Keep the same colorspace property (default). |
| |
| @item unknown |
| @item bt709 |
| @item smpte170m |
| BT 601 |
| |
| @item bt2020nc |
| @end table |
| @end table |
| |
| Set Rec709 colorspace for each frame of the file |
| @example |
| ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt709:color_trc=bt709:colorspace=bt709 output.mov |
| @end example |
| |
| Set Hybrid Log-Gamma parameters for each frame of the file |
| @example |
| ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt2020:color_trc=arib-std-b67:colorspace=bt2020nc output.mov |
| @end example |
| |
| @section remove_extra |
| |
| Remove extradata from packets. |
| |
| It accepts the following parameter: |
| @table @option |
| @item freq |
| Set which frame types to remove extradata from. |
| |
| @table @samp |
| @item k |
| Remove extradata from non-keyframes only. |
| |
| @item keyframe |
| Remove extradata from keyframes only. |
| |
| @item e, all |
| Remove extradata from all frames. |
| |
| @end table |
| @end table |
| |
| @anchor{text2movsub} |
| @section text2movsub |
| |
| Convert text subtitles to MOV subtitles (as used by the @code{mov_text} |
| codec) with metadata headers. |
| |
| See also the @ref{mov2textsub} filter. |
| |
| @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 AV1, H.264, H.265, (M)JPEG, MPEG-2 and VP9, but depending |
| on the build only a subset of these may be available. |
| |
| @section truehd_core |
| |
| Extract the core from a TrueHD stream, dropping ATMOS data. |
| |
| @section vp9_metadata |
| |
| Modify metadata embedded in a VP9 stream. |
| |
| @table @option |
| @item color_space |
| Set the color space value in the frame header. Note that any frame |
| set to RGB will be implicitly set to PC range and that RGB is |
| incompatible with profiles 0 and 2. |
| @table @samp |
| @item unknown |
| @item bt601 |
| @item bt709 |
| @item smpte170 |
| @item smpte240 |
| @item bt2020 |
| @item rgb |
| @end table |
| |
| @item color_range |
| Set the color range value in the frame header. Note that any value |
| imposed by the color space will take precedence over this value. |
| @table @samp |
| @item tv |
| @item pc |
| @end table |
| @end table |
| |
| @section vp9_superframe |
| |
| Merge VP9 invisible (alt-ref) frames back into VP9 superframes. This |
| fixes merging of split/segmented VP9 streams where the alt-ref frame |
| was split from its visible counterpart. |
| |
| @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 |