You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.5 KiB
84 lines
2.5 KiB
/*
|
|
stores sequence header info, for reinit of stream
|
|
Copyright (C) 2000 Martin Vogt
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
it under the terms of the GNU Library General Public License as published by
|
|
the Free Software Foundation.
|
|
|
|
For more information look at the file COPYRIGHT in this package
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef __MPEGVIDEOHEADER_H
|
|
#define __MPEGVIDEOHEADER_H
|
|
|
|
|
|
|
|
/**
|
|
Some vcd do only have one sequence header for the whole
|
|
cd.
|
|
This means we must store this info even after a seek
|
|
which usually destroy the video stream object.
|
|
We then can re-init the video object with the values
|
|
we store here.
|
|
|
|
Here we have the "header" for an mpeg video stream.
|
|
|
|
*/
|
|
|
|
|
|
class MpegVideoHeader {
|
|
|
|
unsigned int h_size; /* Horiz. size in pixels. */
|
|
unsigned int v_size; /* Vert. size in pixels. */
|
|
int mb_height; /* Vert. size in mblocks. */
|
|
int mb_width; /* Horiz. size in mblocks. */
|
|
int mb_size; /* mb_height*mb_width-1 */
|
|
unsigned char aspect_ratio; /* Code for aspect ratio. */
|
|
unsigned int bit_rate; /* Bit rate. */
|
|
unsigned int vbv_buffer_size; /* Minimum buffer size. */
|
|
int const_param_flag; /* Contrained parameter flag. */
|
|
float picture_rate; /* Parse off picture rate code*/
|
|
unsigned int intra_quant_matrix[8][8]; /* Quantization matrix for
|
|
intracoded frames. */
|
|
unsigned int non_intra_quant_matrix[8][8]; /* Quanitization matrix for
|
|
non intracoded frames. */
|
|
class MpegExtension* extension;
|
|
|
|
|
|
public:
|
|
|
|
MpegVideoHeader();
|
|
~MpegVideoHeader();
|
|
|
|
int parseSeq(class MpegVideoStream* mpegVideoStream);
|
|
void copyTo(MpegVideoHeader* dest);
|
|
void print(char* description);
|
|
void init_quanttables();
|
|
|
|
inline int getMB_Height() { return mb_height;}
|
|
inline int getMB_Size() { return mb_size;}
|
|
inline int getMB_Width() { return mb_width;}
|
|
|
|
inline float getPictureRate() { return picture_rate ;}
|
|
double getPictureTime();
|
|
|
|
inline unsigned int* getIntra_quant_matrix() {
|
|
// printf("getI:%p\n",intra_quant_matrix[0]);
|
|
return intra_quant_matrix[0]; }
|
|
inline unsigned int* getNon_intra_quant_matrix() {
|
|
// printf("getN:%p\n",non_intra_quant_matrix[0]);
|
|
return non_intra_quant_matrix[0]; }
|
|
|
|
private:
|
|
void init();
|
|
|
|
};
|
|
|
|
#endif
|