Commit Description:
Add timers for Simulation and various engines...
Commit Description:
Add timers for Simulation and various engines Starting to add additional timers for different stages of the process of updating in order to get more insight into what is slowing it down. The update takes 9ms, which is much longer than it used to. Engine-specific timers are coming later.
File last commit:
Show/Diff file:
Action:
FNA/lib/Theorafile/theorafile.h
138 lines | 3.3 KiB | text/x-c | CLexer
/* Theorafile - Ogg Theora Video Decoder Library
*
* Copyright (c) 2017-2020 Ethan Lee.
* Based on TheoraPlay, Copyright (c) 2011-2016 Ryan C. Gordon.
*
* This software is provided 'as-is', without any express or implied warranty.
* In no event will the authors be held liable for any damages arising from
* the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software in a
* product, an acknowledgment in the product documentation would be
* appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source distribution.
*
* Ethan "flibitijibibo" Lee <flibitijibibo@flibitijibibo.com>
*
*/
#ifndef THEORAFILE_H
#define THEORAFILE_H
#include <theora/theoradec.h>
#include <vorbis/codec.h>
#ifdef __cplusplus
extern "C"
{
#endif /* __cplusplus */
#ifndef DECLSPEC
#if defined(_WIN32)
#define DECLSPEC __declspec(dllexport)
#else
#define DECLSPEC
#endif
#endif
/* I/O Handle + Callbacks */
typedef struct tf_callbacks
{
size_t (*read_func) (void *ptr, size_t size, size_t nmemb, void *datasource);
int (*seek_func) (void *datasource, ogg_int64_t offset, int origin);
int (*close_func) (void *datasource);
} tf_callbacks;
/* File Handle */
typedef struct OggTheora_File
{
/* Current State */
ogg_sync_state sync;
ogg_page page;
int eos;
/* Stream Data */
int tpackets;
int vpackets;
ogg_stream_state tstream;
ogg_stream_state vstream;
/* Metadata */
th_info tinfo;
vorbis_info vinfo;
th_comment tcomment;
vorbis_comment vcomment;
/* Theora Data */
th_dec_ctx *tdec;
/* Vorbis Data */
int vdsp_init;
vorbis_dsp_state vdsp;
int vblock_init;
vorbis_block vblock;
/* I/O Data */
tf_callbacks io;
void *datasource;
} OggTheora_File;
/* Open/Close */
#define TF_EUNKNOWN -1
#define TF_EUNSUPPORTED -2
#define TF_ENODATASOURCE -3
DECLSPEC int tf_open_callbacks(
void *datasource,
OggTheora_File *file,
tf_callbacks io
);
DECLSPEC int tf_fopen(
const char *fname,
OggTheora_File *file
);
DECLSPEC void tf_close(OggTheora_File *file);
/* File Info */
DECLSPEC int tf_hasvideo(OggTheora_File *file);
DECLSPEC int tf_hasaudio(OggTheora_File *file);
DECLSPEC void tf_videoinfo(
OggTheora_File *file,
int *width,
int *height,
double *fps,
th_pixel_fmt *fmt
);
DECLSPEC void tf_audioinfo(
OggTheora_File *file,
int *channels,
int *samplerate
);
/* Stream State */
DECLSPEC int tf_eos(OggTheora_File *file);
DECLSPEC void tf_reset(OggTheora_File *file);
/* Data Reading
*
* Note that these functions are NOT thread-safe! You should put a mutex around
* these two calls if they are being called from separate threads.
*
* Also, `samples` is not measured in frames!
*/
DECLSPEC int tf_readvideo(OggTheora_File *file, char *buffer, int numframes);
DECLSPEC int tf_readaudio(OggTheora_File *file, float *buffer, int samples);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* THEORAFILE_H */