|
xine-lib
1.2.9
|
Macros | |
| #define | BUF_SPECIAL_PALETTE 1 |
| #define | BUF_SPECIAL_ASPECT 3 |
| #define | BUF_SPECIAL_DECODER_CONFIG 4 |
| #define | BUF_SPECIAL_STSD_ATOM 5 |
| #define | BUF_SPECIAL_LPCM_CONFIG 6 |
| #define | BUF_SPECIAL_CHARSET_ENCODING 7 |
| #define | BUF_SPECIAL_SPU_DVD_SUBTYPE 8 |
| #define | SPU_DVD_SUBTYPE_CLUT 1 |
| #define | SPU_DVD_SUBTYPE_PACKAGE 2 |
| #define | SPU_DVD_SUBTYPE_VOBSUB_PACKAGE 3 |
| #define | SPU_DVD_SUBTYPE_NAV 4 |
| #define | BUF_SPECIAL_SPU_DVB_DESCRIPTOR 9 |
| #define | BUF_SPECIAL_RV_CHUNK_TABLE 10 |
Sometimes there is a need to relay special information from a demuxer to a video decoder. For example, some file types store palette data in the file header independant of the video data. The special buffer type offers a way to communicate this or any other custom, format-specific data to the decoder.
The interface was designed in a way that did not require an API version bump. To send a special buffer type, set a buffer's flags field to BUF_FLAG_SPECIAL. Set the buffer's decoder_info[1] field to a number according to one of the special buffer subtypes defined below. The second and third decoder_info[] fields are defined according to your buffer type's requirements.
Finally, remember to set the buffer's size to 0. This way, if a special buffer is sent to a decode that does not know how to handle it, the buffer will fall through to the case where the buffer's data content is accumulated and no harm will be done.
| #define BUF_SPECIAL_ASPECT 3 |
In a BUF_SPECIAL_ASPECT buffer: decoder_info[1] = BUF_SPECIAL_ASPECT decoder_info[2] = MPEG2 aspect ratio code decoder_info[3] = stream scale prohibitions This buffer is used to force mpeg decoders to use a certain aspect. Currently xine-dvdnav uses this, because it has more accurate information about the aspect from the dvd ifo-data. The stream scale prohibitions are also delivered, with bit 0 meaning "deny letterboxing" and bit 1 meaning "deny pan&scan"
Referenced by dvd_plugin_read_block(), dxr3_decode_data(), mpeg2_video_decode_data(), and mpeg2dec_decode_data().
| #define BUF_SPECIAL_CHARSET_ENCODING 7 |
In a BUF_SPECIAL_CHARSET_ENCODING buffer: decoder_info[1] = BUF_SPECIAL_CHARSET_ENCODING decoder_info[2] = size of charset encoding string decoder_info_ptr[2] = pointer to charset encoding string This is used mostly with subtitle buffers when encoding is known at demuxer level (take precedence over xine config settings such as subtitles.separate.src_encoding)
Referenced by demux_sputext_next(), handle_hdmv_textst(), handle_sub_ssa(), handle_sub_utf8(), and spudec_decode_data().
| #define BUF_SPECIAL_DECODER_CONFIG 4 |
In a BUF_SPECIAL_DECODER_CONFIG buffer: decoder_info[1] = BUF_SPECIAL_DECODER_CONFIG decoder_info[2] = data size decoder_info_ptr[2] = pointer to data This buffer is used to pass config information from .mp4 files (atom esds) to decoders. both mpeg4 and aac streams use that.
Referenced by demux_qt_send_headers(), faad_decode_data(), ff_audio_handle_special_buffer(), ff_handle_special_buffer(), init_codec_aac(), read_flv_packet(), real_parse_headers(), vdpau_h264_alter_decode_data(), vdpau_h264_decode_data(), and vorbis_decode_data().
| #define BUF_SPECIAL_LPCM_CONFIG 6 |
In a BUF_SPECIAL_LPCM_CONFIG buffer: decoder_info[1] = BUF_SPECIAL_LPCM_CONFIG decoder_info[2] = config data lpcm data encoded into mpeg2 streams have a format configuration byte in every frame. this is used to detect the sample rate, number of bits and channels.
Referenced by demux_ts_parse_pes_header(), lpcm_decode_data(), parse_mpeg2_packet(), and parse_private_stream_1().
| #define BUF_SPECIAL_PALETTE 1 |
In a BUF_SPECIAL_PALETTE buffer: decoder_info[1] = BUF_SPECIAL_PALETTE decoder_info[2] = number of entries in palette table decoder_info_ptr[2] = pointer to palette table This buffer type is used to provide a file- and decoder-independent facility to transport RGB color palettes from demuxers to decoders. A palette table is an array of palette_entry_t structures. A decoder should not count on this array to exist for the duration of the program's execution and should copy, manipulate, and store the palette data privately if it needs the palette information.
Referenced by asf_send_video_header(), bitplane_decode_data(), demux_avi_send_headers(), demux_idcin_send_chunk(), demux_iff_send_chunk(), demux_ipmovie_send_headers(), demux_mve_send_chunk(), demux_qt_send_headers(), ff_handle_special_buffer(), process_ipmovie_chunk(), rgb_decode_data(), and vdpau_h264_decode_data().
| #define BUF_SPECIAL_RV_CHUNK_TABLE 10 |
In a BUF_SPECIAL_RV_CHUNK_TABLE: decoder_info[1] = BUF_SPECIAL_RV_CHUNK_TABLE decoder_info[2] = number of entries in chunk table decoder_info_ptr[2] = pointer to the chunk table
This buffer transports the chunk table associated to each RealVideo frame.
Referenced by demux_real_send_chunk(), ff_handle_special_buffer(), handle_realvideo(), and realdec_decode_data().
| #define BUF_SPECIAL_SPU_DVB_DESCRIPTOR 9 |
In a BUF_SPECIAL_SPU_DVB_DESCRIPTOR decoder_info[1] = BUF_SPECIAL_SPU_DVB_DESCRIPTOR decoder_info[2] = size of spu_dvb_descriptor_t decoder_info_ptr[2] = pointer to spu_dvb_descriptor_t, or NULL decoder_info[3] =
This buffer is used to tell a DVBSUB decoder when the stream changes. For more information on how to write a DVBSUB decoder, see the comment at the top of src/demuxers/demux_ts.c
Referenced by demux_ts_update_spu_channel(), and spudec_decode_data().
| #define BUF_SPECIAL_SPU_DVD_SUBTYPE 8 |
In a BUF_SPECIAL_SPU_DVD_SUBTYPE: decoder_info[1] = BUF_SPECIAL_SPU_DVD_SUBTYPE decoder_info[2] = subtype decoder_info[3] = This buffer is pass SPU subtypes from DVDs
Referenced by dvd_plugin_read_block(), dxr3_spudec_decode_data(), handle_vobsub(), init_codec_vobsub(), parse_mpeg2_packet(), parse_private_stream_1(), parse_private_stream_2(), and spudec_decode_data().
| #define BUF_SPECIAL_STSD_ATOM 5 |
In a BUF_SPECIAL_STSD_ATOM buffer: decoder_info[1] = BUF_SPECIAL_STSD_ATOM decoder_info[2] = size of the ImageDescription atom, minus the four length bytes at the beginning decoder_info_ptr[2] = pointer to ImageDescription atom, starting with the codec fourcc Some Quicktime decoders need information contained within the ImageDescription atom inside a Quicktime file's stsd atom. This special buffer carries the ImageDescription atom from the QT demuxer to an A/V decoder.
Referenced by demux_qt_send_headers(), ff_audio_handle_special_buffer(), ff_handle_special_buffer(), qta_decode_data(), and qtv_decode_data().
| #define SPU_DVD_SUBTYPE_CLUT 1 |
Referenced by dvd_plugin_read_block(), dxr3_spudec_decode_data(), init_codec_vobsub(), and spudec_decode_data().
| #define SPU_DVD_SUBTYPE_NAV 4 |
Referenced by dxr3_spudec_decode_data(), parse_private_stream_2(), and spudec_decode_data().
| #define SPU_DVD_SUBTYPE_PACKAGE 2 |
Referenced by parse_mpeg2_packet(), and parse_private_stream_1().
| #define SPU_DVD_SUBTYPE_VOBSUB_PACKAGE 3 |
Referenced by handle_vobsub(), and spudec_decode_data().
1.8.14