pgv_rs 0.1.2

Library for working with PGV (a toy MPEG-like video codec)
Documentation
#ifndef _PGV_H
#define _PGV_H


#include <stdint.h>

typedef struct PGV_Stream {
    void *context;
    size_t read_fn(void *context, uint8_t *buffer, size_t bufferlen);
    uint64_t seek_fn(void *context, int64_t offset, int32_t whence);
} PGV_Stream;

typedef void PGV_Decoder;

extern PGV_Decoder *pgv_decoder_new(PGV_Stream *stream);
extern void pgv_decoder_destroy(PGV_Decoder *decoder);

extern uint32_t pgv_decoder_width(PGV_Decoder *decoder);
extern uint32_t pgv_decoder_height(PGV_Decoder *decoder);
extern uint32_t pgv_decoder_num_frames(PGV_Decoder *decoder);
extern uint32_t pgv_decoder_framerate(PGV_Decoder *decoder);
extern uint32_t pgv_decoder_num_audio_frames(PGV_Decoder *decoder);
extern uint32_t pgv_decoder_audio_channels(PGV_Decoder *decoder);
extern uint32_t pgv_decoder_audio_samplerate(PGV_Decoder *decoder);
extern uint32_t pgv_decoder_audio_sync_hint(PGV_Decoder *decoder);

extern int32_t pgv_decoder_decode_frame(PGV_Decoder *decoder, uint8_t *buf_y, uint8_t *buf_u, uint8_t *buf_v);
extern int32_t pgv_decoder_decode_audio(PGV_Decoder *decoder, int16_t **buf, size_t samples);

#endif