FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavcodec
libschroedinger.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2008 BBC, Anuradha Suraparaju <asuraparaju at gmail dot com >
3
*
4
* This file is part of FFmpeg.
5
*
6
* FFmpeg is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public
8
* License as published by the Free Software Foundation; either
9
* version 2.1 of the License, or (at your option) any later version.
10
*
11
* FFmpeg is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with FFmpeg; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
/**
22
* @file
23
* data structures common to libschroedinger decoder and encoder
24
*/
25
26
#ifndef AVCODEC_LIBSCHROEDINGER_H
27
#define AVCODEC_LIBSCHROEDINGER_H
28
29
#include <schroedinger/schrobitstream.h>
30
#include <schroedinger/schroframe.h>
31
32
#include "
avcodec.h
"
33
34
typedef
struct
SchroVideoFormatInfo
{
35
uint16_t
width
;
36
uint16_t
height
;
37
uint16_t
frame_rate_num
;
38
uint16_t
frame_rate_denom
;
39
}
SchroVideoFormatInfo
;
40
41
/**
42
* contains a single encoded frame returned from Dirac or Schroedinger
43
*/
44
typedef
struct
FFSchroEncodedFrame
{
45
/** encoded frame data */
46
uint8_t
*
p_encbuf
;
47
48
/** encoded frame size */
49
uint32_t
size
;
50
51
/** encoded frame number. Will be used as pts */
52
uint32_t
frame_num
;
53
54
/** key frame flag. 1 : is key frame , 0 : in not key frame */
55
uint16_t
key_frame
;
56
}
FFSchroEncodedFrame
;
57
58
/**
59
* queue element
60
*/
61
typedef
struct
FFSchroQueueElement
{
62
/** Data to be stored in queue*/
63
void
*
data
;
64
/** Pointer to next element queue */
65
struct
FFSchroQueueElement
*
next
;
66
}
FFSchroQueueElement
;
67
68
69
/**
70
* A simple queue implementation used in libschroedinger
71
*/
72
typedef
struct
FFSchroQueue
{
73
/** Pointer to head of queue */
74
FFSchroQueueElement
*
p_head
;
75
/** Pointer to tail of queue */
76
FFSchroQueueElement
*
p_tail
;
77
/** Queue size*/
78
int
size
;
79
}
FFSchroQueue
;
80
81
/**
82
* Initialise the queue
83
*/
84
void
ff_schro_queue_init
(
FFSchroQueue
*queue);
85
86
/**
87
* Add an element to the end of the queue
88
*/
89
int
ff_schro_queue_push_back
(
FFSchroQueue
*queue,
void
*p_data);
90
91
/**
92
* Return the first element in the queue
93
*/
94
void
*
ff_schro_queue_pop
(
FFSchroQueue
*queue);
95
96
/**
97
* Free the queue resources. free_func is a function supplied by the caller to
98
* free any resources allocated by the caller. The data field of the queue
99
* element is passed to it.
100
*/
101
void
ff_schro_queue_free
(
FFSchroQueue
*queue,
void
(*free_func)(
void
*));
102
103
static
const
struct
{
104
enum
AVPixelFormat
ff_pix_fmt
;
105
SchroChromaFormat
schro_pix_fmt
;
106
SchroFrameFormat
schro_frame_fmt
;
107
}
schro_pixel_format_map
[] = {
108
{
AV_PIX_FMT_YUV420P
, SCHRO_CHROMA_420, SCHRO_FRAME_FORMAT_U8_420 },
109
{
AV_PIX_FMT_YUV422P
, SCHRO_CHROMA_422, SCHRO_FRAME_FORMAT_U8_422 },
110
{
AV_PIX_FMT_YUV444P
, SCHRO_CHROMA_444, SCHRO_FRAME_FORMAT_U8_444 },
111
};
112
113
/**
114
* Returns the video format preset matching the input video dimensions and
115
* time base.
116
*/
117
SchroVideoFormatEnum
ff_get_schro_video_format_preset
(
AVCodecContext
*avctx);
118
119
/**
120
* Sets the Schroedinger frame format corresponding to the Schro chroma format
121
* passed. Returns 0 on success, -1 on failure.
122
*/
123
int
ff_get_schro_frame_format
(SchroChromaFormat schro_chroma_fmt,
124
SchroFrameFormat *
schro_frame_fmt
);
125
126
/**
127
* Create a Schro frame based on the dimensions and frame format
128
* passed. Returns a pointer to a frame on success, NULL on failure.
129
*/
130
SchroFrame *
ff_create_schro_frame
(
AVCodecContext
*avctx,
131
SchroFrameFormat
schro_frame_fmt
);
132
133
#endif
/* AVCODEC_LIBSCHROEDINGER_H */
Generated on Sun Mar 8 2015 02:34:54 for FFmpeg by
1.8.2