📄 queue.h
字号:
#ifndef QUEUE_H_INCLUDED#define QUEUE_H_INCLUDED/* Ogle - A video player * Copyright (C) 2000, 2001 Bj鰎n Englund, H錵an Hjort * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */#include "ogle/dvd.h"#include "ogle/dvdevents.h"#include "ogle/msgevents.h"typedef enum { PacketType_MPEG1 = 0, PacketType_PES = 1} PacketType_t;typedef struct { uint64_t PTS; uint64_t DTS; uint64_t SCR_base; uint16_t SCR_ext; int in_use; uint8_t PTS_DTS_flags; uint8_t SCR_flags; int scr_nr; uint32_t packet_data_offset; uint32_t packet_data_len; char *q_addr; char filename[PATH_MAX+1]; // hack for mmap int flowcmd; PacketType_t packet_type; uint32_t packet_offset;} data_elem_t;typedef struct { int y_offset; //[480][720]; //y-component image int u_offset; //[480/2][720/2]; //u-component int v_offset; //[480/2][720/2]; //v-component uint16_t start_x, start_y; uint16_t horizontal_size; uint16_t vertical_size; uint16_t padded_width, padded_height; uint16_t display_start_x; uint16_t display_start_y; uint16_t display_width; uint16_t display_height; int sar_frac_n; int sar_frac_d; float sar;} yuv_picture_t;typedef struct { uint64_t PTS; uint64_t DTS; uint64_t SCR_base; uint16_t SCR_ext; int displayed; int is_reference; uint8_t PTS_DTS_flags; uint8_t SCR_flags; int scr_nr; yuv_picture_t picture; int picture_off; int picture_len; long int frame_interval; char *q_addr;} picture_data_elem_t;typedef struct { uint8_t *y; //[480][720]; //y-component image uint8_t *u; //[480/2][720/2]; //u-component uint8_t *v; //[480/2][720/2]; //v-component picture_data_elem_t *info;} yuv_image_t;typedef enum { DataBufferType_Raw, DataBufferType_Video, DataBufferType_Audio, DataBufferType_MpegPES, DataBufferType_MpegES, DataBufferType_MpegPS, DataBufferType_MpegTS} DataBufferType_t;typedef struct { DataBufferType_t type; int format; int width; int height; int stride;} DataBufferVideoInfo_t;typedef struct { DataBufferType_t type; int format;} DataBufferAudioInfo_t;typedef struct { DataBufferType_t type;} DataBufferRawInfo_t;typedef union { DataBufferType_t type; DataBufferRawInfo_t raw; DataBufferVideoInfo_t video; DataBufferAudioInfo_t audio;} DataBufferInfo_t;typedef struct { int shmid; DataBufferInfo_t info; int nr_of_dataelems; int write_nr; int read_nr; int buffer_start_offset; int buffer_size; int pad; //8 byte alignment needed for data elements} data_buf_head_t;typedef struct { int data_elem_index; int in_use;} q_elem_t;#define BUFS_FULL 0#define BUFS_EMPTY 1typedef struct { int qid; int data_buf_shmid; int nr_of_qelems; int write_nr; int read_nr; MsgEventClient_t writer; MsgEventClient_t reader; int writer_requests_notification; //writer sets/unsets this int reader_requests_notification; //reader sets/unsets this } q_head_t;typedef struct _data_q_t { int in_use; int eoq; q_head_t *q_head; q_elem_t *q_elems; data_buf_head_t *data_head; picture_data_elem_t *data_elems; yuv_image_t *image_bufs;#ifdef HAVE_XV yuv_image_t *reserv_image;#endif struct _data_q_t *next;} data_q_t;#endif /* QUEUE_H_INCLUDED */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -