00001 /* 00002 * This file is part of libbluray 00003 * Copyright (C) 2010 hpi1 00004 * 00005 * This library is free software; you can redistribute it and/or 00006 * modify it under the terms of the GNU Lesser General Public 00007 * License as published by the Free Software Foundation; either 00008 * version 2.1 of the License, or (at your option) any later version. 00009 * 00010 * This library is distributed in the hope that it will be useful, 00011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 * Lesser General Public License for more details. 00014 * 00015 * You should have received a copy of the GNU Lesser General Public 00016 * License along with this library. If not, see 00017 * <http://www.gnu.org/licenses/>. 00018 */ 00019 00020 #if !defined(_GRAPHICS_PROCESSOR_H_) 00021 #define _GRAPHICS_PROCESSOR_H_ 00022 00023 #include "ig.h" 00024 00025 #include <util/attributes.h> 00026 00027 #include <stdint.h> 00028 00029 #ifdef __cplusplus 00030 extern "C" { 00031 #endif 00032 00033 typedef struct graphics_processor_s GRAPHICS_PROCESSOR; 00034 struct pes_buffer_s; 00035 00036 /* 00037 * PG_DISPLAY_SET 00038 */ 00039 00040 typedef struct { 00041 int64_t valid_pts; 00042 uint8_t complete; /* set complete: last decoded segment was END_OF_DISPLAY */ 00043 uint8_t epoch_start; 00044 00045 unsigned num_palette; 00046 unsigned num_object; 00047 unsigned num_window; 00048 00049 BD_PG_PALETTE *palette; 00050 BD_PG_OBJECT *object; 00051 BD_PG_WINDOW *window; 00052 00053 /* only one of the following segments can be present */ 00054 BD_IG_INTERACTIVE *ics; 00055 BD_PG_COMPOSITION *pcs; 00056 00057 } PG_DISPLAY_SET; 00058 00059 BD_PRIVATE void pg_display_set_free(PG_DISPLAY_SET **s); 00060 00061 /* 00062 * graphics processor 00063 */ 00064 00065 BD_PRIVATE GRAPHICS_PROCESSOR *graphics_processor_init(void); 00066 BD_PRIVATE void graphics_processor_free(GRAPHICS_PROCESSOR **p); 00067 00082 BD_PRIVATE int 00083 graphics_processor_decode_pes(PG_DISPLAY_SET **s, 00084 struct pes_buffer_s **buf, 00085 int64_t stc); 00086 00102 BD_PRIVATE int 00103 graphics_processor_decode_ts(GRAPHICS_PROCESSOR *p, 00104 PG_DISPLAY_SET **s, 00105 uint16_t pid, uint8_t *unit, unsigned num_units, 00106 int64_t stc); 00107 00108 #ifdef __cplusplus 00109 }; 00110 #endif 00111 00112 #endif // _GRAPHICS_PROCESSOR_H_
1.6.3