1,6 → 1,6 |
|
#include <libsync.h> |
#include "pixlib3.h" |
#include <libsync.h> |
|
#define BLACK_MAGIC_SOUND |
#define BLACK_MAGIC_VIDEO |
9,6 → 9,7 |
typedef unsigned int count_t; |
|
typedef struct render render_t; |
typedef struct vstate vst_t; |
|
#define HAS_LEFT (1<<0) |
#define HAS_TOP (1<<1) |
17,6 → 18,7 |
|
struct render |
{ |
vst_t *vst; |
uint32_t caps; |
uint32_t ctx_width; |
uint32_t ctx_height; |
65,7 → 67,6 |
#define ID_VOL_LEVEL 103 |
#define ID_VOL_CTRL 104 |
|
|
typedef struct |
{ |
mutex_t lock; |
95,7 → 96,25 |
int put_packet(queue_t *q, AVPacket *pkt); |
int get_packet(queue_t *q, AVPacket *pkt); |
|
struct vstate |
{ |
AVFormatContext *fCtx; /* format context */ |
AVCodecContext *vCtx; /* video decoder context */ |
AVCodecContext *aCtx; /* audio decoder context */ |
AVCodec *vCodec; /* video codec */ |
AVCodec *aCodec; /* audio codec */ |
int vStream; /* video stream index */ |
int aStream; /* audio stream index */ |
|
queue_t q_video; /* video packets queue */ |
queue_t q_audio; /* audio packets queue */ |
|
mutex_t gpu_lock; /* gpu access lock. libdrm not yet thread safe :( */ |
|
}; |
|
|
|
#define DECODER_THREAD 1 |
#define AUDIO_THREAD 2 |
#define VIDEO_THREAD 4 |
104,7 → 123,7 |
extern astream_t astream; |
extern AVRational video_time_base; |
|
render_t *create_render(window_t *win, AVCodecContext *ctx, uint32_t flags); |
render_t *create_render(vst_t *vst, window_t *win, uint32_t flags); |
void destroy_render(render_t *render); |
int init_render(render_t *render, int width, int height); |
void render_adjust_size(render_t *render, window_t *win); |
116,10 → 135,11 |
int audio_thread(void *param); |
void set_audio_volume(int left, int right); |
|
int init_video(AVCodecContext *ctx); |
int init_video(vst_t* vst); |
int video_thread(void *param); |
|
int decode_video(AVCodecContext *ctx, queue_t *qv); |
void decoder(vst_t *vst); |
int decode_video(vst_t* vst); |
int decode_audio(AVCodecContext *ctx, queue_t *qa); |
|
double get_master_clock(void); |