VLC
4.0.0-dev
|
This file defines picture structures and functions in vlc. More...
Go to the source code of this file.
Data Structures | |
struct | plane_t |
Description of a planar graphic field. More... | |
struct | picture_context_t |
struct | picture_buffer_t |
struct | vlc_video_context_operations |
struct | picture_t |
Video picture. More... | |
struct | picture_resource_t |
Resource for a picture. More... | |
Macros | |
#define | PICTURE_PLANE_MAX (VOUT_MAX_PLANES) |
Maximum number of plane for a picture. More... | |
#define | Y_PIXELS p[Y_PLANE].p_pixels |
#define | Y_PITCH p[Y_PLANE].i_pitch |
#define | U_PIXELS p[U_PLANE].p_pixels |
#define | U_PITCH p[U_PLANE].i_pitch |
#define | V_PIXELS p[V_PLANE].p_pixels |
#define | V_PITCH p[V_PLANE].i_pitch |
#define | A_PIXELS p[A_PLANE].p_pixels |
#define | A_PITCH p[A_PLANE].i_pitch |
Typedefs | |
typedef struct plane_t | plane_t |
Description of a planar graphic field. More... | |
typedef struct picture_context_t | picture_context_t |
typedef struct picture_buffer_t | picture_buffer_t |
typedef struct vlc_decoder_device | vlc_decoder_device |
typedef struct vlc_video_context | vlc_video_context |
Enumerations | |
enum | vlc_video_context_type { VLC_VIDEO_CONTEXT_NONE, VLC_VIDEO_CONTEXT_VAAPI, VLC_VIDEO_CONTEXT_VDPAU, VLC_VIDEO_CONTEXT_DXVA2, VLC_VIDEO_CONTEXT_D3D11VA, VLC_VIDEO_CONTEXT_AWINDOW, VLC_VIDEO_CONTEXT_NVDEC, VLC_VIDEO_CONTEXT_CVPX, VLC_VIDEO_CONTEXT_MMAL } |
Decoder device type. More... | |
enum | { Y_PLANE = 0, U_PLANE = 1, V_PLANE = 2, A_PLANE = 3 } |
Functions | |
vlc_video_context * | vlc_video_context_Create (vlc_decoder_device *, enum vlc_video_context_type private_type, size_t private_size, const struct vlc_video_context_operations *) |
void | vlc_video_context_Release (vlc_video_context *) |
enum vlc_video_context_type | vlc_video_context_GetType (const vlc_video_context *) |
void * | vlc_video_context_GetPrivate (vlc_video_context *, enum vlc_video_context_type) |
vlc_video_context * | vlc_video_context_Hold (vlc_video_context *) |
vlc_decoder_device * | vlc_video_context_HoldDevice (vlc_video_context *) |
Get the decoder device used by the device context. More... | |
static vlc_video_context * | picture_GetVideoContext (picture_t *pic) |
picture_t * | picture_New (vlc_fourcc_t i_chroma, int i_width, int i_height, int i_sar_num, int i_sar_den) |
This function will create a new picture. More... | |
picture_t * | picture_NewFromFormat (const video_format_t *p_fmt) |
This function will create a new picture using the given format. More... | |
picture_t * | picture_NewFromResource (const video_format_t *, const picture_resource_t *) |
This function will create a new picture using the provided resource. More... | |
void | picture_Destroy (picture_t *picture) |
Destroys a picture without references. More... | |
static picture_t * | picture_Hold (picture_t *picture) |
Increments the picture reference count. More... | |
static void | picture_Release (picture_t *picture) |
Decrements the picture reference count. More... | |
void | picture_CopyProperties (picture_t *p_dst, const picture_t *p_src) |
This function will copy all picture dynamic properties. More... | |
void | picture_Reset (picture_t *) |
This function will reset a picture information (properties and quantizers). More... | |
void | picture_CopyPixels (picture_t *p_dst, const picture_t *p_src) |
This function will copy the picture pixels. More... | |
void | plane_CopyPixels (plane_t *p_dst, const plane_t *p_src) |
void | picture_Copy (picture_t *p_dst, const picture_t *p_src) |
This function will copy both picture dynamic properties and pixels. More... | |
picture_t * | picture_Clone (picture_t *pic) |
Perform a shallow picture copy. More... | |
int | picture_Export (vlc_object_t *p_obj, block_t **pp_image, video_format_t *p_fmt, picture_t *p_picture, vlc_fourcc_t i_format, int i_override_width, int i_override_height, bool b_crop) |
This function will export a picture to an encoded bitstream. More... | |
int | picture_Setup (picture_t *, const video_format_t *) |
This function will setup all fields of a picture_t without allocating any memory. More... | |
static void | picture_SwapUV (picture_t *picture) |
Swap UV planes of a Tri Planars picture. More... | |
This file defines picture structures and functions in vlc.
#define PICTURE_PLANE_MAX (VOUT_MAX_PLANES) |
Maximum number of plane for a picture.
Referenced by picture_NewFromFormat().
typedef struct picture_buffer_t picture_buffer_t |
typedef struct picture_context_t picture_context_t |
typedef struct vlc_decoder_device vlc_decoder_device |
typedef struct vlc_video_context vlc_video_context |
Decoder device type.
Perform a shallow picture copy.
This function makes a shallow copy of an existing picture. The same planes and resources will be used, and the cloned picture reference count will be incremented.
References picture_t::context, picture_context_t::copy, likely, picture_DestroyClone(), and picture_InternalClone().
Referenced by picture_Release(), and vout_snapshot_Set().
This function will copy both picture dynamic properties and pixels.
You have to notice that sometime a simple picture_Hold may do what you want without the copy overhead. Provided for convenience.
p_dst | pointer to the destination picture. |
p_src | pointer to the source picture. |
References picture_CopyPixels(), and picture_CopyProperties().
Referenced by picture_Release(), and ThreadDisplayRenderPicture().
This function will copy the picture pixels.
You can safely copy between pictures that do not have the same size, only the compatible(smaller) part will be copied.
References picture_t::context, picture_context_t::copy, picture_t::i_planes, picture_t::p, and plane_CopyPixels().
Referenced by picture_Copy(), and picture_Release().
This function will copy all picture dynamic properties.
References picture_t::b_force, picture_t::b_progressive, picture_t::b_still, picture_t::b_top_field_first, picture_t::date, and picture_t::i_nb_fields.
Referenced by picture_Copy(), and picture_Release().
void picture_Destroy | ( | picture_t * | picture | ) |
Destroys a picture without references.
This function destroys a picture with zero references left. Never call this function directly. Use picture_Release() instead.
References container_of, picture_priv_t::destroy, picture_priv_t::gc, PictureDestroyContext(), picture_priv_buffer_t::priv, and picture_t::refs.
Referenced by picture_Release().
int picture_Export | ( | vlc_object_t * | p_obj, |
block_t ** | pp_image, | ||
video_format_t * | p_fmt, | ||
picture_t * | p_picture, | ||
vlc_fourcc_t | i_format, | ||
int | i_override_width, | ||
int | i_override_height, | ||
bool | b_crop | ||
) |
This function will export a picture to an encoded bitstream.
pp_image will contain the encoded bitstream in psz_format format.
p_fmt can be NULL otherwise it will be set with the format used for the picture before encoding.
i_override_width/height allow to override the width and/or the height of the picture to be encoded:
References picture_t::date, picture_t::format, video_format_t::i_chroma, block_t::i_dts, video_format_t::i_height, block_t::i_pts, video_format_t::i_sar_den, video_format_t::i_sar_num, video_format_t::i_visible_height, video_format_t::i_visible_width, video_format_t::i_width, video_format_t::i_x_offset, video_format_t::i_y_offset, image_HandlerCreate, image_HandlerDelete(), image_Write, VLC_EGENERIC, VLC_ENOMEM, and VLC_SUCCESS.
Referenced by picture_Release(), and vout_GetSnapshot().
|
inlinestatic |
References picture_t::context, picture_New(), picture_NewFromFormat(), picture_context_t::vctx, VLC_API, and VLC_USED.
Referenced by ThreadDisplayPreparePicture().
Increments the picture reference count.
References picture_t::refs.
Referenced by ConvertRGB32AndBlend(), ImageConvert(), ImageWrite(), picture_fifo_Peek(), picture_InternalClone(), SpuRenderRegion(), ThreadDisplayPreparePicture(), and ThreadDisplayRenderPicture().
picture_t* picture_New | ( | vlc_fourcc_t | i_chroma, |
int | i_width, | ||
int | i_height, | ||
int | i_sar_num, | ||
int | i_sar_den | ||
) |
This function will create a new picture.
The picture created will implement a default release management compatible with picture_Hold and picture_Release. This default management will release p_sys, gc.p_sys fields if non NULL.
References picture_NewFromFormat(), video_format_Init(), and video_format_Setup().
Referenced by picture_GetVideoContext().
picture_t* picture_NewFromFormat | ( | const video_format_t * | p_fmt | ) |
This function will create a new picture using the given format.
When possible, it is preferred to use this function over picture_New as more information about the format is kept.
Referenced by picture_GetVideoContext().
picture_t* picture_NewFromResource | ( | const video_format_t * | , |
const picture_resource_t * | |||
) |
This function will create a new picture using the provided resource.
If the resource is NULL then a plain picture_NewFromFormat is returned.
References plane_t::i_lines, picture_resource_t::i_lines, plane_t::i_pitch, picture_resource_t::i_pitch, picture_t::i_planes, picture_t::p, picture_resource_t::p, plane_t::p_pixels, picture_resource_t::p_pixels, picture_priv_t::picture, picture_InitPrivate(), and unlikely.
Referenced by picture_InternalClone().
|
inlinestatic |
Decrements the picture reference count.
If the reference count reaches zero, the picture is destroyed. If it was allocated from a pool, the underlying picture buffer will be returned to the pool. Otherwise, the picture buffer will be freed.
References picture_Clone(), picture_Copy(), picture_CopyPixels(), picture_CopyProperties(), picture_Destroy(), picture_Export(), picture_Reset(), picture_Setup(), plane_CopyPixels(), picture_t::refs, VLC_API, and vlc_assert.
Referenced by ConvertRGB32AndBlend(), FilterDeletePictures(), ImageRead(), ImageWrite(), ModuleThread_PlayVideo(), ModuleThread_QueueThumbnail(), picture_DestroyClone(), picture_fifo_Flush(), picture_pool_NewFromFormat(), picture_pool_Release(), picture_pool_ReleasePicture(), picture_pool_Reserve(), spuregion_CreateFromPicture(), SpuRenderRegion(), subpicture_NewFromPicture(), subpicture_region_Delete(), subpicture_region_private_Delete(), ThreadDisplayPicture(), ThreadDisplayPreparePicture(), ThreadDisplayRenderPicture(), ThreadFilterFlush(), video_splitter_DeletePicture(), video_splitter_NewPicture(), vout_ConvertForDisplay(), vout_display_Display(), vout_FlushUnlocked(), vout_GetSnapshot(), vout_IsEmpty(), vout_snapshot_Destroy(), and VoutSaveSnapshot().
void picture_Reset | ( | picture_t * | ) |
This function will reset a picture information (properties and quantizers).
It is sometimes useful for reusing pictures (like from a pool).
References picture_t::b_force, picture_t::b_progressive, picture_t::b_still, picture_t::b_top_field_first, picture_t::date, picture_t::i_nb_fields, PictureDestroyContext(), and VLC_TICK_INVALID.
Referenced by ModuleThread_NewVideoBuffer(), picture_Release(), vout_GetPicture(), and VoutVideoFilterInteractiveNewPicture().
int picture_Setup | ( | picture_t * | , |
const video_format_t * | |||
) |
This function will setup all fields of a picture_t without allocating any memory.
XXX The memory must already be initialized. It does not need to be released.
It will return VLC_EGENERIC if the core does not understand the requested format.
It can be useful to get the properties of planes.
Referenced by picture_Release().
|
inlinestatic |
Swap UV planes of a Tri Planars picture.
It just swap the planes information without doing any copy.
References picture_t::i_planes, picture_t::p, U_PLANE, V_PLANE, and vlc_assert.
References plane_t::i_pitch, plane_t::i_visible_lines, plane_t::i_visible_pitch, and plane_t::p_pixels.
Referenced by picture_CopyPixels(), and picture_Release().
vlc_video_context* vlc_video_context_Create | ( | vlc_decoder_device * | , |
enum vlc_video_context_type | private_type, | ||
size_t | private_size, | ||
const struct vlc_video_context_operations * | |||
) |
void* vlc_video_context_GetPrivate | ( | vlc_video_context * | , |
enum | vlc_video_context_type | ||
) |
References vlc_video_context::private, and vlc_video_context::private_type.
Referenced by vlc_video_context_Release().
enum vlc_video_context_type vlc_video_context_GetType | ( | const vlc_video_context * | ) |
References vlc_video_context::private_type.
vlc_video_context* vlc_video_context_Hold | ( | vlc_video_context * | ) |
References vlc_video_context::rc, and vlc_atomic_rc_inc().
Referenced by filter_chain_Reset(), ModuleThread_UpdateVideoFormat(), ThreadDisplayPreparePicture(), vout_display_New(), and vout_Start().
vlc_decoder_device* vlc_video_context_HoldDevice | ( | vlc_video_context * | ) |
Get the decoder device used by the device context.
This will increment the refcount of the decoder device.
References vlc_video_context::device, and vlc_decoder_device_Hold().
Referenced by DisplayHoldDecoderDevice(), and vout_Start().
void vlc_video_context_Release | ( | vlc_video_context * | ) |
References vlc_video_context_operations::destroy, vlc_video_context::device, vlc_video_context::ops, vlc_video_context::private_type, vlc_video_context::rc, vlc_atomic_rc_dec(), vlc_decoder_device_Release(), and vlc_video_context_GetPrivate().
Referenced by DeleteDecoder(), filter_chain_Delete(), filter_chain_Reset(), ModuleThread_UpdateVideoFormat(), PictureDestroyContext(), ThreadDisplayPreparePicture(), vout_display_Delete(), vout_ReleaseDisplay(), and vout_Start().