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... | |
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, picture_t::format, plane_t::i_lines, picture_resource_t::i_lines, plane_t::i_pitch, picture_resource_t::i_pitch, picture_t::i_planes, likely, picture_t::p, picture_resource_t::p, plane_t::p_pixels, picture_resource_t::p_pixels, picture_t::p_sys, picture_resource_t::p_sys, picture_DestroyClone(), picture_Hold(), and picture_NewFromResource().
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(), ThreadDisplayRenderPicture(), and vout_ConvertForDisplay().
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(), 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().
Increments the picture reference count.
References picture_t::refs.
Referenced by ConvertRGB32AndBlend(), ImageConvert(), ImageWrite(), picture_Clone(), picture_fifo_Peek(), picture_pool_ClonePicture(), 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().
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.
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 picture_priv_t::destroy, picture_priv_t::gc, 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_t::p_sys, picture_resource_t::p_sys, picture_resource_t::pf_destroy, picture_priv_t::picture, picture_DestroyDummy(), picture_NewPrivate(), and unlikely.
Referenced by picture_Clone(), and picture_pool_ClonePicture().
|
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 ModuleThread_UpdateVideoFormat().
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 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(), and ModuleThread_UpdateVideoFormat().