/*******************************************************************
                            GOP interface
 *******************************************************************/

#ifndef GOP_H
#define GOP_H

#include "mpeg_io.h"
#include "timecode.h"
#include "sequence_header.h"
#include "picture_header.h"

typedef struct {
	size_t offset;
	int frame;
} GOP;

typedef struct {
	MPEG_IO *p;
	FRAME_PER_SCALE *fps;
	READ_PICTURE_HEADER_OPTION *pic_opt;
} GOP_TC;

typedef GOP (* find_gop)(void *, int);

typedef struct {
	void *   arg1;
	find_gop func;
} FIND_GOP;

#ifdef __cplusplus
extern "C" {
#endif

#ifndef GOP_C
extern int next_gop(MPEG_IO *p);
extern int read_gop(GOP_TC *in, GOP *out);
extern int count_frame(GOP_TC *p);
extern GOP gop_tc_find_gop(void *p, int frame);
extern int last_gop(MPEG_IO *p);
#endif
	
#ifdef __cplusplus
}
#endif

#endif
