31 { 640, 480, 24000, 1001},
32 { 176, 120, 15000, 1001},
34 { 352, 240, 15000, 1001},
36 { 704, 480, 15000, 1001},
38 { 720, 480, 30000, 1001},
40 { 1280, 720, 60000, 1001},
42 { 1920, 1080, 30000, 1001},
43 { 1920, 1080, 25, 1 },
44 { 1920, 1080, 60000, 1001},
45 { 1920, 1080, 50, 1 },
46 { 2048, 1080, 24, 1 },
47 { 4096, 2160, 24, 1 },
52 unsigned int ret_idx = 0;
55 sizeof(ff_schro_video_format_info[0]);
57 for (idx = 1; idx < num_formats; ++idx) {
121 SCHRO_VIDEO_FORMAT_CUSTOM ,
122 SCHRO_VIDEO_FORMAT_QSIF ,
123 SCHRO_VIDEO_FORMAT_QCIF ,
124 SCHRO_VIDEO_FORMAT_SIF ,
125 SCHRO_VIDEO_FORMAT_CIF ,
126 SCHRO_VIDEO_FORMAT_4SIF ,
127 SCHRO_VIDEO_FORMAT_4CIF ,
128 SCHRO_VIDEO_FORMAT_SD480I_60 ,
129 SCHRO_VIDEO_FORMAT_SD576I_50 ,
130 SCHRO_VIDEO_FORMAT_HD720P_60 ,
131 SCHRO_VIDEO_FORMAT_HD720P_50 ,
132 SCHRO_VIDEO_FORMAT_HD1080I_60 ,
133 SCHRO_VIDEO_FORMAT_HD1080I_50 ,
134 SCHRO_VIDEO_FORMAT_HD1080P_60 ,
135 SCHRO_VIDEO_FORMAT_HD1080P_50 ,
136 SCHRO_VIDEO_FORMAT_DC2K_24 ,
137 SCHRO_VIDEO_FORMAT_DC4K_24 ,
143 sizeof(ff_schro_video_formats[0]);
147 return (idx < num_formats) ? ff_schro_video_formats[idx] :
148 SCHRO_VIDEO_FORMAT_CUSTOM;
159 for (idx = 0; idx < num_formats; ++idx) {
184 int y_width, uv_width;
185 int y_height, uv_height;
188 y_width = avctx->
width;
190 uv_width = y_width >> (SCHRO_FRAME_FORMAT_H_SHIFT(schro_frame_fmt));
191 uv_height = y_height >> (SCHRO_FRAME_FORMAT_V_SHIFT(schro_frame_fmt));
199 p_frame = schro_frame_new();
201 p_frame->width = y_width;
202 p_frame->height = y_height;
205 for (i = 0; i < 3; ++i) {
206 p_frame->components[i].width = i ? uv_width : y_width;
207 p_frame->components[i].stride = p_pic->linesize[i];
208 p_frame->components[i].height = i ? uv_height : y_height;
209 p_frame->components[i].length =
210 p_frame->components[i].stride * p_frame->components[i].height;
211 p_frame->components[i].data = p_pic->data[i];
214 p_frame->components[i].v_shift =
215 SCHRO_FRAME_FORMAT_V_SHIFT(p_frame->format);
216 p_frame->components[i].h_shift =
217 SCHRO_FRAME_FORMAT_H_SHIFT(p_frame->format);
FFSchroQueueElement * p_tail
Pointer to tail of queue.
void * data
Data to be stored in queue.
ptrdiff_t const GLvoid * data
static const SchroVideoFormatEnum ff_schro_video_formats[]
Schroedinger video preset table.
SchroChromaFormat schro_pix_fmt
memory handling functions
SchroFrame * ff_create_schro_frame(AVCodecContext *avctx, SchroFrameFormat schro_frame_fmt)
Create a Schro frame based on the dimensions and frame format passed.
enum AVPixelFormat pix_fmt
Pixel format, see AV_PIX_FMT_xxx.
static const struct @64 schro_pixel_format_map[]
data structures common to libschroedinger decoder and encoder
Macro definitions for various function/variable attributes.
AVRational time_base
This is the fundamental unit of time (in seconds) in terms of which frame timestamps are represented...
void avpicture_free(AVPicture *picture)
Free a picture previously allocated by avpicture_alloc().
void * ff_schro_queue_pop(FFSchroQueue *queue)
Return the first element in the queue.
int ff_get_schro_frame_format(SchroChromaFormat schro_pix_fmt, SchroFrameFormat *schro_frame_fmt)
Sets the Schroedinger frame format corresponding to the Schro chroma format passed.
int ff_schro_queue_push_back(FFSchroQueue *queue, void *p_data)
Add an element to the end of the queue.
void ff_schro_queue_free(FFSchroQueue *queue, void(*free_func)(void *))
Free the queue resources.
av_cold void ff_schro_queue_init(FFSchroQueue *queue)
Initialise the queue.
A simple queue implementation used in libschroedinger.
int width
picture width / height.
static unsigned int get_video_format_idx(AVCodecContext *avctx)
main external API structure.
int avpicture_alloc(AVPicture *picture, enum AVPixelFormat pix_fmt, int width, int height)
Allocate memory for the pixels of a picture and setup the AVPicture fields for it.
SchroFrameFormat schro_frame_fmt
SchroVideoFormatEnum ff_get_schro_video_format_preset(AVCodecContext *avctx)
Returns the video format preset matching the input video dimensions and time base.
struct FFSchroQueueElement * next
Pointer to next element queue.
FFSchroQueueElement * p_head
Pointer to head of queue.
static const SchroVideoFormatInfo ff_schro_video_format_info[]
static void free_schro_frame(SchroFrame *frame, void *priv)
void * av_mallocz(size_t size)
Allocate a block of size bytes with alignment suitable for all memory accesses (including vectors if ...