
Go to the source code of this file.
Data Structures | |
| struct | filter_t |
| Structure describing a filter. More... | |
Defines | |
| #define | VLC_FILTER_H 1 |
| #define | VIDEO_FILTER_WRAPPER(name) |
| Create a picture_t *(*)( filter_t *, picture_t * ) compatible wrapper using a void (*)( filter_t *, picture_t *, picture_t * ) function. | |
| #define | filter_chain_New(a, b, c, d, e, f) __filter_chain_New( VLC_OBJECT( a ), b, c, d, e, f ) |
Typedefs | |
| typedef struct filter_owner_sys_t | filter_owner_sys_t |
| typedef struct filter_chain_t | filter_chain_t |
| Filter chain management API The filter chain management API is used to dynamically construct filters and add them in a chain. | |
Functions | |
| static picture_t * | filter_NewPicture (filter_t *p_filter) |
| This function will return a new picture usable by p_filter as an output buffer. | |
| static void | filter_DeletePicture (filter_t *p_filter, picture_t *p_picture) |
| This function will release a picture create by filter_NewPicture. | |
| static subpicture_t * | filter_NewSubpicture (filter_t *p_filter) |
| This function will return a new subpicture usable by p_filter as an output buffer. | |
| static void | filter_DeleteSubpicture (filter_t *p_filter, subpicture_t *p_subpicture) |
| This function will release a subpicture create by filter_NewSubicture. | |
| static block_t * | filter_NewAudioBuffer (filter_t *p_filter, int i_size) |
| This function will return a new audio buffer usable by p_filter as an output buffer. | |
| filter_t * | filter_NewBlend (vlc_object_t *, const video_format_t *p_dst_chroma) |
| It creates a blend filter. | |
| int | filter_ConfigureBlend (filter_t *, int i_dst_width, int i_dst_height, const video_format_t *p_src) |
| It configures blend filter parameters that are allowed to changed after the creation. | |
| int | filter_Blend (filter_t *, picture_t *p_dst, int i_dst_x, int i_dst_y, const picture_t *p_src, int i_alpha) |
| It blends a picture into another one. | |
| void | filter_DeleteBlend (filter_t *) |
| It destroys a blend filter created by filter_NewBlend. | |
| filter_chain_t * | __filter_chain_New (vlc_object_t *, const char *, bool, int(*)(filter_t *, void *), void(*)(filter_t *), void *) |
| Create new filter chain. | |
| void | filter_chain_Delete (filter_chain_t *) |
| Delete filter chain will delete all filters in the chain and free all allocated data. | |
| void | filter_chain_Reset (filter_chain_t *, const es_format_t *, const es_format_t *) |
| Reset filter chain will delete all filters in the chain and reset p_fmt_in and p_fmt_out to the new values. | |
| filter_t * | filter_chain_AppendFilter (filter_chain_t *, const char *, config_chain_t *, const es_format_t *, const es_format_t *) |
| Append filter to the end of the chain. | |
| int | filter_chain_AppendFromString (filter_chain_t *, const char *) |
| Append new filter to filter chain from string. | |
| int | filter_chain_DeleteFilter (filter_chain_t *, filter_t *) |
| Delete filter from filter chain. | |
| int | filter_chain_GetLength (filter_chain_t *) |
| Get the number of filters in the filter chain. | |
| const es_format_t * | filter_chain_GetFmtOut (filter_chain_t *) |
| Get last p_fmt_out in the chain. | |
| picture_t * | filter_chain_VideoFilter (filter_chain_t *, picture_t *) |
| Apply the filter chain to a video picture. | |
| block_t * | filter_chain_AudioFilter (filter_chain_t *, block_t *) |
| Apply the filter chain to a audio block. | |
| void | filter_chain_SubFilter (filter_chain_t *, mtime_t) |
| Apply filter chain to subpictures. | |
| int | filter_chain_MouseFilter (filter_chain_t *, vlc_mouse_t *, const vlc_mouse_t *) |
| Apply the filter chain to a mouse state. | |
| #define filter_chain_New | ( | a, | |||
| b, | |||||
| c, | |||||
| d, | |||||
| e, | |||||
| f | ) | __filter_chain_New( VLC_OBJECT( a ), b, c, d, e, f ) |
Referenced by __spu_Create(), __vout_Create(), Activate(), Add(), Open(), transcode_audio_new(), transcode_video_process(), and VoutDisplayCreateRender().
| #define VIDEO_FILTER_WRAPPER | ( | name | ) |
Value:
static picture_t *name ## _Filter ( filter_t *p_filter, \ picture_t *p_pic ) \ { \ picture_t *p_outpic = filter_NewPicture( p_filter ); \ if( p_outpic ) \ { \ name( p_filter, p_pic, p_outpic ); \ picture_CopyProperties( p_outpic, p_pic ); \ } \ picture_Release( p_pic ); \ return p_outpic; \ }
Currently used by the chroma video filters
| #define VLC_FILTER_H 1 |
| typedef struct filter_chain_t filter_chain_t |
Filter chain management API The filter chain management API is used to dynamically construct filters and add them in a chain.
| typedef struct filter_owner_sys_t filter_owner_sys_t |
| filter_chain_t* __filter_chain_New | ( | vlc_object_t * | p_this, | |
| const char * | psz_capability, | |||
| bool | b_allow_fmt_out_change, | |||
| int(*)(filter_t *, void *) | pf_buffer_allocation_init, | |||
| void(*)(filter_t *) | pf_buffer_allocation_clean, | |||
| void * | p_buffer_allocation_data | |||
| ) |
Create new filter chain.
| p_object | pointer to a vlc object | |
| psz_capability | vlc capability of filters in filter chain | |
| b_allow_format_fmt_change | allow changing of fmt | |
| pf_buffer_allocation_init | callback function to initialize buffer allocations | |
| pf_buffer_allocation_clear | callback function to clear buffer allocation initialization | |
| p_buffer_allocation_data | pointer to private allocation data |
References filter_chain_t::allocator, filter_chain_t::b_allow_fmt_out_change, es_format_Init(), filter_chain_t::first, filter_chain_t::fmt_in, filter_chain_t::fmt_out, filter_chain_t::last, filter_chain_t::length, filter_chain_allocator_t::p_data, filter_chain_t::p_this, filter_chain_allocator_t::pf_clean, filter_chain_allocator_t::pf_init, filter_chain_t::psz_capability, and UNKNOWN_ES.
| int filter_Blend | ( | filter_t * | , | |
| picture_t * | p_dst, | |||
| int | i_dst_x, | |||
| int | i_dst_y, | |||
| const picture_t * | p_src, | |||
| int | i_alpha | |||
| ) |
It blends a picture into another one.
The input picture is not modified and not released.
References filter_t::p_module, filter_t::pf_video_blend, VLC_EGENERIC, and VLC_SUCCESS.
Referenced by FilterVideo(), and SpuRenderRegion().
| filter_t* filter_chain_AppendFilter | ( | filter_chain_t * | , | |
| const char * | , | |||
| config_chain_t * | , | |||
| const es_format_t * | , | |||
| const es_format_t * | ||||
| ) |
Append filter to the end of the chain.
| p_chain | pointer to filter chain | |
| psz_name | name of filter | |
| p_cfg | ||
| p_fmt_in | input es_format_t | |
| p_fmt_out | output es_format_t |
References filter_chain_AppendFilterInternal(), msg_Err, and UpdateBufferFunctions().
Referenced by Activate(), CreateChain(), Open(), transcode_audio_filter_chain_build(), transcode_video_process(), and VoutDisplayCreateRender().
| int filter_chain_AppendFromString | ( | filter_chain_t * | , | |
| const char * | ||||
| ) |
Append new filter to filter chain from string.
| p_chain | pointer to filter chain | |
| psz_string | string of filters |
References filter_chain_AppendFromStringInternal(), and UpdateBufferFunctions().
Referenced by Activate(), Add(), RunThread(), spu_SortSubpictures(), transcode_audio_new(), and transcode_video_process().
| block_t* filter_chain_AudioFilter | ( | filter_chain_t * | , | |
| block_t * | ||||
| ) |
Apply the filter chain to a audio block.
| p_chain | pointer to filter chain | |
| p_block | audio frame to apply filters on |
References filter_chain_t::first, chained_filter_t::next, and filter_t::pf_audio_filter.
Referenced by transcode_audio_process().
| void filter_chain_Delete | ( | filter_chain_t * | p_chain | ) |
Delete filter chain will delete all filters in the chain and free all allocated data.
The pointer to the filter chain is then no longer valid.
| p_chain | pointer to filter chain |
References es_format_Clean(), filter_chain_Reset(), filter_chain_t::fmt_in, and filter_chain_t::fmt_out.
Referenced by Activate(), Del(), Destroy(), EndThread(), Open(), spu_Destroy(), transcode_video_close(), and VoutDisplayDestroyRender().
| int filter_chain_DeleteFilter | ( | filter_chain_t * | , | |
| filter_t * | ||||
| ) |
Delete filter from filter chain.
This function also releases the filter object and unloads the filter modules. The pointer to p_filter is no longer valid after this function successfully returns.
| p_chain | pointer to filter chain | |
| p_filter | pointer to filter object |
References filter_chain_DeleteFilterInternal(), and UpdateBufferFunctions().
Referenced by CreateChain().
| const es_format_t* filter_chain_GetFmtOut | ( | filter_chain_t * | ) |
Get last p_fmt_out in the chain.
| p_chain | pointer to filter chain |
References filter_chain_t::b_allow_fmt_out_change, chained_filter_t::filter, filter_t::fmt_out, filter_chain_t::fmt_out, and filter_chain_t::last.
Referenced by Activate(), transcode_audio_filter_chain_build(), transcode_audio_new(), and transcode_video_process().
| int filter_chain_GetLength | ( | filter_chain_t * | ) |
Get the number of filters in the filter chain.
| p_chain | pointer to filter chain |
References filter_chain_t::length.
Referenced by transcode_video_process().
| int filter_chain_MouseFilter | ( | filter_chain_t * | , | |
| vlc_mouse_t * | , | |||
| const vlc_mouse_t * | ||||
| ) |
Apply the filter chain to a mouse state.
It will be applied from the output to the input. It makes sense only for a video filter chain.
The vlc_mouse_t* pointers may be the same.
References filter_chain_t::first, chained_filter_t::next, filter_t::pf_mouse, VLC_EGENERIC, and VLC_SUCCESS.
Referenced by MouseEvent().
| void filter_chain_Reset | ( | filter_chain_t * | p_chain, | |
| const es_format_t * | p_fmt_in, | |||
| const es_format_t * | p_fmt_out | |||
| ) |
Reset filter chain will delete all filters in the chain and reset p_fmt_in and p_fmt_out to the new values.
| p_chain | pointer to filter chain | |
| p_fmt_in | new fmt_in params | |
| p_fmt_out | new fmt_out params |
References es_format_Clean(), es_format_Copy(), chained_filter_t::filter, filter_chain_DeleteFilterInternal(), filter_chain_t::first, filter_chain_t::fmt_in, and filter_chain_t::fmt_out.
Referenced by Activate(), Add(), BuildChromaChain(), BuildChromaResize(), filter_chain_Delete(), Open(), RunThread(), spu_SortSubpictures(), transcode_audio_new(), transcode_video_process(), and VoutDisplayCreateRender().
| void filter_chain_SubFilter | ( | filter_chain_t * | , | |
| mtime_t | ||||
| ) |
Apply filter chain to subpictures.
| p_chain | pointer to filter chain | |
| display_date | of subpictures |
References filter_chain_t::first, chained_filter_t::next, filter_chain_t::p_this, filter_t::pf_sub_filter, and spu_DisplaySubpicture().
Referenced by spu_SortSubpictures().
| picture_t* filter_chain_VideoFilter | ( | filter_chain_t * | , | |
| picture_t * | ||||
| ) |
Apply the filter chain to a video picture.
| p_chain | pointer to filter chain | |
| p_picture | picture to apply filters on |
References filter_chain_t::first, chained_filter_t::next, and filter_t::pf_video_filter.
Referenced by Chain(), Filter(), Render(), RunThread(), Send(), transcode_video_process(), and vout_FilterDisplay().
| int filter_ConfigureBlend | ( | filter_t * | , | |
| int | i_dst_width, | |||
| int | i_dst_height, | |||
| const video_format_t * | p_src | |||
| ) |
It configures blend filter parameters that are allowed to changed after the creation.
References filter_t::fmt_in, filter_t::fmt_out, video_format_t::i_chroma, es_format_t::i_codec, video_format_t::i_height, video_format_t::i_visible_height, video_format_t::i_visible_width, video_format_t::i_width, module_need, module_unneed, filter_t::p_module, es_format_t::video, VLC_EGENERIC, and VLC_SUCCESS.
Referenced by FilterVideo(), and SpuRenderRegion().
| void filter_DeleteBlend | ( | filter_t * | ) |
It destroys a blend filter created by filter_NewBlend.
References module_unneed, filter_t::p_module, vlc_object_detach, and vlc_object_release.
Referenced by OpenCommon(), and spu_Destroy().
This function will release a picture create by filter_NewPicture.
Provided for convenience.
| p_filter | filter_t object | |
| p_picture | picture to be deleted |
Referenced by BufferDel(), Deinterlace(), and video_del().
| static void filter_DeleteSubpicture | ( | filter_t * | p_filter, | |
| subpicture_t * | p_subpicture | |||
| ) | [inline, static] |
This function will release a subpicture create by filter_NewSubicture.
Provided for convenience.
| p_filter | filter_t object | |
| p_subpicture | to be released |
This function will return a new audio buffer usable by p_filter as an output buffer.
You have to release it using block_Release or by returning it to the caller as a pf_audio_filter return value. Provided for convenience.
| p_filter | filter_t object | |
| i_size | size of audio buffer requested |
Referenced by Convert(), Do_S16ToF32(), Do_U8ToF32(), DoWork(), Filter(), and Resample().
| filter_t* filter_NewBlend | ( | vlc_object_t * | , | |
| const video_format_t * | p_dst_chroma | |||
| ) |
It creates a blend filter.
Only the chroma properties of the dest format is used (chroma type, rgb masks and shifts)
References es_format_Init(), filter_t::fmt_in, filter_t::fmt_out, video_format_t::i_bmask, video_format_t::i_chroma, es_format_t::i_codec, video_format_t::i_gmask, video_format_t::i_lbshift, video_format_t::i_lgshift, video_format_t::i_lrshift, video_format_t::i_rbshift, video_format_t::i_rgshift, video_format_t::i_rmask, video_format_t::i_rrshift, filter_t::p_module, es_format_t::video, VIDEO_ES, vlc_custom_create, vlc_object_attach, and VLC_OBJECT_GENERIC.
Referenced by OpenCommon(), and spu_RenderSubpictures().
This function will return a new picture usable by p_filter as an output buffer.
You have to release it using filter_DeletePicture or by returning it to the caller as a pf_video_filter return value. Provided for convenience.
| p_filter | filter_t object |
Referenced by BufferNew(), Deinterlace(), Filter(), FilterPacked(), FilterPlanar(), FilterVideo(), PostprocPict(), and video_new().
| static subpicture_t* filter_NewSubpicture | ( | filter_t * | p_filter | ) | [inline, static] |
This function will return a new subpicture usable by p_filter as an output buffer.
You have to release it using filter_DeleteSubpicture or by returning it to the caller as a pf_sub_filter return value. Provided for convenience.
| p_filter | filter_t object |
Referenced by Filter(), and FilterSub().
1.5.6