1:
11:
12:
16:
17:
#ifndef GVD_H
18:
#define GVD_H
19:
20:
21:
#include <stddef.h>
22:
#include <stdint.h>
23:
#include <stdbool.h>
24:
25:
#include "gvd_error.h"
26:
#include "gvd_api_params.h"
27:
28:
#ifndef GVD_MAX_ENUM
29:
#define GVD_MAX_ENUM 0x7FFFFFFF
30:
#endif
31:
32:
33:
typedef enum {
34: GVD_OUTMOD_NONE,
35: GVD_OUTMOD_BMU,
36: GVD_OUTMOD_VRAM,
37: GVD_OUTMOD_FORCE_SIZE =
GVD_MAX_ENUM
38: }
gvdOutMod;
39:
40:
41:
typedef struct {
42:
void *commit_output_buffer;
43:
void *discard_input_buffer;
44:
void *discard_output_buffer;
45:
void *notify_frame_size;
46:
void *notify_decode_error;
47:
void *notify_stream_pos;
48:
void *decode_stream_end;
49:
void *rewind_done;
50:
void *seqparam_decode_done;
51: }
gvdCbParams;
52:
53:
54:
60:
typedef struct {
61:
gvdCbFunc connect_done;
62:
gvdCbFunc disconnect_done;
63:
gvdCbFunc put_input_buffer_done;
64:
gvdCbFunc put_output_buffer_done;
65:
gvdCbFunc discard_output_buffers_done;
66:
gvdCbFunc commit_output_buffer;
67:
gvdCbFunc discard_input_buffer;
68:
gvdCbFunc discard_output_buffer;
69:
gvdCbFunc notify_frame_size;
70:
gvdCbFunc notify_decode_error;
71:
gvdCbFunc notify_stream_pos;
72:
gvdCbFunc decode_stream_end;
73:
gvdCbFunc seek_done;
74:
gvdCbFunc rewind_done;
75:
gvdCbFunc pause_done;
76:
gvdCbFunc play_accepted;
77:
gvdCbFunc get_timestamp_done;
78:
gvdCbFunc rewind_accepted;
79:
gvdCbFunc forward_accepted;
80:
gvdCbFunc seqparam_decode_done;
81: }
gvdCbFuncs;
82:
83:
84:
typedef enum {
85: GVD_APIFUNC_STATUS_CLOSE,
86: GVD_APIFUNC_STATUS_PAUSE,
87: GVD_APIFUNC_STATUS_PLAY,
88: GVD_APIFUNC_STATUS_REWIND,
89: GVD_APIFUNC_STATUS_FORWARD,
90: GVD_APIFUNC_STATUS_UNKNOWN,
91: GVD_APIFUNC_STATUS_FORCE_SIZE =
GVD_MAX_ENUM
92: }
gvdApiFuncStatus;
93:
94:
typedef struct gvdContext_s
gvdContext;
95:
96:
109:
gvdError GVD_InitInitializeParam(
gvdInitializeParam *initparam);
110:
119: uint32_t
GVD_GetRequiredMemorySize(
void);
120:
133:
gvdError GVD_SetWorkMemory(
void *address, size_t size);
134:
147:
gvdError GVD_Initialize(
void);
148:
159:
gvdError GVD_Finalize(
void);
160:
172:
gvdError GVD_Execute(
void);
173:
185:
gvdError GVD_CreateContext(
gvdContext **gvdctx);
186:
197:
gvdError GVD_DestroyContext(
gvdContext *gvdctx);
198:
213:
gvdError GVD_Connect(
gvdContext *gvdctx,
void *param_user);
214:
229:
gvdError GVD_Disconnect(
gvdContext *gvdctx,
void *param_user);
230:
245:
gvdError GVD_OpenFile(
gvdContext *gvdctx,
const char *filename,
void *param_user);
246:
261:
gvdError GVD_CloseFile(
gvdContext *gvdctx,
void *param_user);
262:
279:
gvdError GVD_PutInputBuffer(
gvdContext *gvdctx,
gvdInBufInfo *bufinf,
void *param_user);
280:
298:
gvdError GVD_PutOutputBuffer(
gvdContext *gvdctx,
gvdOutBufInfo *obufinf,
void *param_user);
299:
311:
gvdError GVD_DiscardOutputBuffers(
gvdContext *gvdctx,
void *param_user);
312:
322:
gvdError GVD_InitCallbackInfo(
gvdCbFuncs *cbfuncs,
gvdCbParams *cbparams);
323:
336:
gvdError GVD_SetCallbackParams(
gvdContext *gvdctx,
gvdCbParams *cbparams);
337:
350:
gvdError GVD_SetCallbackFunctions(
gvdContext *gvdctx,
gvdCbFuncs *cbfuncs);
351:
365:
gvdError GVD_SelectOutputModule(
gvdContext *gvdctx,
gvdOutMod omod);
366:
378:
gvdError GVD_GetBMUId(
gvdContext *gvdctx, int32_t *bmuid);
379:
392:
gvdError GVD_SetBMUAddr(
gvdContext *gvdctx,
void *addr);
393:
406:
gvdError GVD_SetSearchRange(
gvdContext *gvdctx, uint32_t range);
407:
417:
gvdError GVD_GetSearchRange(
gvdContext *gvdctx, uint32_t *range);
418:
435:
gvdError GVD_SetOutputHeap(
gvdContext *gvdctx,
void *heap, size_t size);
436:
448:
gvdError GVD_SetPositionBuffer(
gvdContext *gvdctx,
void *buffer, size_t size);
449:
461:
gvdError GVD_GetStatus(
gvdContext *gvd,
gvdApiFuncStatus *status);
462:
475:
gvdError GVD_GetTimeStamp(
gvdContext *gvd,
void *param_user);
476:
489:
gvdError GVD_Play(
gvdContext *gvdctx,
void *param_user);
490:
503:
gvdError GVD_Pause(
gvdContext *gvd,
void *param_user);
504:
519:
gvdError GVD_Forward(
gvdContext *gvd, uint32_t n_speed,
void *param_user);
520:
536:
gvdError GVD_Rewind(
gvdContext *gvd, uint32_t n_speed,
void *param_user);
537:
552:
gvdError GVD_Seek(
gvdContext *gvd,
gvdSeekParam *seekparam,
void *param_user);
553:
561:
void GVD_GetFatalError(
gvdFatalErrorInfo *fatalerror);
562:
574:
gvdError GVD_SetMaxNumInputBuffers(
gvdContext *gvdctx, size_t max_num_inputbuffers);
575:
584:
gvdError GVD_GetMaxNumInputBuffers(
gvdContext *gvdctx, size_t *max_num_inputbuffers);
585:
594:
gvdError GVD_SetMaxNumOutputBuffers(
gvdContext *gvdctx, size_t max_num_outputbuffers);
595:
604:
gvdError GVD_GetMaxNumOutputBuffers(
gvdContext *gvdctx, size_t *max_num_outputbuffers);
605:
614:
gvdError GVD_SetIPConv(
gvdContext *gvdctx, _Bool enable);
615:
625:
gvdError GVD_GetIPConv(
gvdContext *gvdctx, _Bool *enable);
626:
637:
gvdError GVD_SetFatalErrorAddress(
void *address);
638:
651:
gvdError GVD_SetOccupyMemoryAddress(
void *address);
652:
663:
gvdError GVD_ForcedShutdown(
gvdContext *gvdctx);
664:
665:
#endif