Commit 52627248 authored by Anton Khirnov's avatar Anton Khirnov

frame: add a cropping rectangle to AVFrame

Extend the width/height doxy to clarify that it should store coded
values.
parent b68e3531
...@@ -13,6 +13,10 @@ libavutil: 2015-08-28 ...@@ -13,6 +13,10 @@ libavutil: 2015-08-28
API changes, most recent first: API changes, most recent first:
2016-xx-xx - xxxxxxx - lavu 55.30.0 - frame.h
Add AVFrame.crop_left/right/top/bottom fields for attaching cropping
information to video frames.
2016-xx-xx - xxxxxxx 2016-xx-xx - xxxxxxx
Change av_sha_update() and av_md5_sum()/av_md5_update() length Change av_sha_update() and av_md5_sum()/av_md5_update() length
parameter type to size_t at next major bump. parameter type to size_t at next major bump.
......
...@@ -390,6 +390,10 @@ int av_frame_copy_props(AVFrame *dst, const AVFrame *src) ...@@ -390,6 +390,10 @@ int av_frame_copy_props(AVFrame *dst, const AVFrame *src)
dst->key_frame = src->key_frame; dst->key_frame = src->key_frame;
dst->pict_type = src->pict_type; dst->pict_type = src->pict_type;
dst->sample_aspect_ratio = src->sample_aspect_ratio; dst->sample_aspect_ratio = src->sample_aspect_ratio;
dst->crop_top = src->crop_top;
dst->crop_bottom = src->crop_bottom;
dst->crop_left = src->crop_left;
dst->crop_right = src->crop_right;
dst->pts = src->pts; dst->pts = src->pts;
dst->repeat_pict = src->repeat_pict; dst->repeat_pict = src->repeat_pict;
dst->interlaced_frame = src->interlaced_frame; dst->interlaced_frame = src->interlaced_frame;
......
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#ifndef AVUTIL_FRAME_H #ifndef AVUTIL_FRAME_H
#define AVUTIL_FRAME_H #define AVUTIL_FRAME_H
#include <stddef.h>
#include <stdint.h> #include <stdint.h>
#include "avutil.h" #include "avutil.h"
...@@ -180,9 +181,18 @@ typedef struct AVFrame { ...@@ -180,9 +181,18 @@ typedef struct AVFrame {
uint8_t **extended_data; uint8_t **extended_data;
/** /**
* width and height of the video frame * @name Video dimensions
* Video frames only. The coded dimensions (in pixels) of the video frame,
* i.e. the size of the rectangle that contains some well-defined values.
*
* @note The part of the frame intended for display/presentation is further
* restricted by the @ref cropping "Cropping rectangle".
* @{
*/ */
int width, height; int width, height;
/**
* @}
*/
/** /**
* number of audio samples (per channel) described by this frame * number of audio samples (per channel) described by this frame
...@@ -369,6 +379,22 @@ typedef struct AVFrame { ...@@ -369,6 +379,22 @@ typedef struct AVFrame {
* AVHWFramesContext describing the frame. * AVHWFramesContext describing the frame.
*/ */
AVBufferRef *hw_frames_ctx; AVBufferRef *hw_frames_ctx;
/**
* @anchor cropping
* @name Cropping
* Video frames only. The number of pixels to discard from the the
* top/bottom/left/right border of the frame to obtain the sub-rectangle of
* the frame intended for presentation.
* @{
*/
size_t crop_top;
size_t crop_bottom;
size_t crop_left;
size_t crop_right;
/**
* @}
*/
} AVFrame; } AVFrame;
/** /**
......
...@@ -54,7 +54,7 @@ ...@@ -54,7 +54,7 @@
*/ */
#define LIBAVUTIL_VERSION_MAJOR 55 #define LIBAVUTIL_VERSION_MAJOR 55
#define LIBAVUTIL_VERSION_MINOR 29 #define LIBAVUTIL_VERSION_MINOR 30
#define LIBAVUTIL_VERSION_MICRO 0 #define LIBAVUTIL_VERSION_MICRO 0
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment