crystalhd.c File Reference
#include <inttypes.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <libcrystalhd/bc_dts_types.h>
#include <libcrystalhd/bc_dts_defs.h>
#include <libcrystalhd/libcrystalhd_if.h>
#include "avcodec.h"
#include "h264.h"
#include "internal.h"
#include "libavutil/imgutils.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/opt.h"
Include dependency graph for crystalhd.c:

Go to the source code of this file.

Data Structures

struct  OpaqueList
 
struct  CHDContext
 

Macros

#define _XOPEN_SOURCE   600
 
#define OUTPUT_PROC_TIMEOUT   50
 Timeout parameter passed to DtsProcOutput() in us. More...
 
#define TIMESTAMP_UNIT   100000
 Step between fake timestamps passed to hardware in units of 100ns. More...
 
#define BASE_WAIT   10000
 Initial value in us of the wait in decode() More...
 
#define WAIT_UNIT   1000
 Increment in us to adjust wait in decode() More...
 

Typedefs

typedef struct OpaqueList OpaqueList
 

Enumerations

enum  CopyRet {
  RET_ERROR = -1, RET_OK = 0, RET_COPY_AGAIN = 1, RET_SKIP_NEXT_COPY = 2,
  RET_COPY_NEXT_FIELD = 3
}
 

Functions

static BC_MEDIA_SUBTYPE id2subtype (CHDContext *priv, enum AVCodecID id)
 
static void print_frame_info (CHDContext *priv, BC_DTS_PROC_OUT *output)
 
static uint64_t opaque_list_push (CHDContext *priv, uint64_t reordered_opaque, uint8_t pic_type)
 
static OpaqueListopaque_list_pop (CHDContext *priv, uint64_t fake_timestamp)
 
static void flush (AVCodecContext *avctx)
 
static av_cold int uninit (AVCodecContext *avctx)
 
static av_cold int init (AVCodecContext *avctx)
 
static CopyRet copy_frame (AVCodecContext *avctx, BC_DTS_PROC_OUT *output, void *data, int *got_frame)
 
static CopyRet receive_frame (AVCodecContext *avctx, void *data, int *got_frame)
 
static int decode (AVCodecContext *avctx, void *data, int *got_frame, AVPacket *avpkt)
 

Variables

static const AVOption options []
 

Macro Definition Documentation

#define _XOPEN_SOURCE   600

Definition at line 76 of file crystalhd.c.

#define BASE_WAIT   10000

Initial value in us of the wait in decode()

Definition at line 98 of file crystalhd.c.

Referenced by decode(), flush(), and init().

#define OUTPUT_PROC_TIMEOUT   50

Timeout parameter passed to DtsProcOutput() in us.

Definition at line 94 of file crystalhd.c.

Referenced by receive_frame().

#define TIMESTAMP_UNIT   100000

Step between fake timestamps passed to hardware in units of 100ns.

Definition at line 96 of file crystalhd.c.

Referenced by opaque_list_push().

#define WAIT_UNIT   1000

Increment in us to adjust wait in decode()

Definition at line 100 of file crystalhd.c.

Referenced by decode().

Typedef Documentation

typedef struct OpaqueList OpaqueList

Enumeration Type Documentation

enum CopyRet
Enumerator
RET_ERROR 
RET_OK 
RET_COPY_AGAIN 
RET_SKIP_NEXT_COPY 
RET_COPY_NEXT_FIELD 

Definition at line 107 of file crystalhd.c.

Function Documentation

static CopyRet copy_frame ( AVCodecContext avctx,
BC_DTS_PROC_OUT *  output,
void data,
int *  got_frame 
)
inlinestatic

Definition at line 536 of file crystalhd.c.

Referenced by receive_frame().

static void flush ( AVCodecContext avctx)
static

Definition at line 316 of file crystalhd.c.

Referenced by decode().

static BC_MEDIA_SUBTYPE id2subtype ( CHDContext priv,
enum AVCodecID  id 
)
inlinestatic

Definition at line 167 of file crystalhd.c.

Referenced by init().

static av_cold int init ( AVCodecContext avctx)
static

Definition at line 379 of file crystalhd.c.

Referenced by decode().

static OpaqueList* opaque_list_pop ( CHDContext priv,
uint64_t  fake_timestamp 
)
static

Definition at line 263 of file crystalhd.c.

Referenced by copy_frame().

static uint64_t opaque_list_push ( CHDContext priv,
uint64_t  reordered_opaque,
uint8_t  pic_type 
)
static

Definition at line 233 of file crystalhd.c.

Referenced by decode().

static void print_frame_info ( CHDContext priv,
BC_DTS_PROC_OUT *  output 
)
inlinestatic

Definition at line 187 of file crystalhd.c.

Referenced by receive_frame().

static CopyRet receive_frame ( AVCodecContext avctx,
void data,
int *  got_frame 
)
inlinestatic

Definition at line 732 of file crystalhd.c.

Referenced by decode().

static av_cold int uninit ( AVCodecContext avctx)
static

Definition at line 334 of file crystalhd.c.

Referenced by decode(), init(), and movie_request_frame().

Variable Documentation

const AVOption options[]
static
Initial value:
= {
{ "crystalhd_downscale_width",
"Turn on downscaling to the specified width",
offsetof(CHDContext, sWidth),
AV_OPT_TYPE_INT, {.i64 = 0}, 0, UINT32_MAX,
{ NULL, },
}
NULL
Definition: eval.c:55
#define AV_OPT_FLAG_VIDEO_PARAM
Definition: opt.h:285
#define AV_OPT_FLAG_DECODING_PARAM
a generic parameter which can be set by the user for demuxing or decoding
Definition: opt.h:282

Definition at line 153 of file crystalhd.c.

Referenced by decode().