oggtheoracapture.h
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:2k
源码类别:

OpenGL

开发平台:

Visual C++

  1. // Header section
  2. #ifndef _OGGTHEORACAPTURE_H_
  3. #define _OGGTHEORACAPTURE_H_
  4. #include "theora/theora.h"
  5. #include "moviecapture.h"
  6. class OggTheoraCapture : public MovieCapture
  7. {
  8. public:
  9.     OggTheoraCapture();
  10.     virtual ~OggTheoraCapture();
  11.     bool start(const std::string& filename, int w, int h, float fps);
  12.     bool end();
  13.     bool captureFrame();
  14.     int getWidth() const;
  15.     int getHeight() const;
  16.     float getFrameRate() const;
  17.     int getFrameCount() const;
  18.     int getBytesOut() const { return video_bytesout; } ;
  19.     void setAspectRatio(int, int);
  20.     void setQuality(float);
  21.     void recordingStatus(bool) {};  // Added to allow GTK compilation
  22. private:
  23.     void cleanup();
  24. private:
  25.     int video_x;
  26.     int video_y;
  27.     int frame_x;
  28.     int frame_y;
  29.     int frame_x_offset;
  30.     int frame_y_offset;
  31.     int video_an;
  32.     int video_ad;
  33.     int video_hzn;
  34.     int video_hzd;
  35.     int video_r; // 45000 <= video_r <= 2000000 (45Kbps - 2000Kbps)
  36.     int video_q; // 0-63 aka 0-10 * 6.3
  37.     bool        capturing;
  38.     int        video_frame_count;
  39.     int        video_bytesout;
  40.     // Consider RGB to YUV Color converstion table - jpeglib has one
  41.     // but according the standards it's incorrect (generates values 0-255,
  42.     // instead of clamped to 16-240).
  43.     int        rowStride;
  44.     unsigned char  *pixels;
  45.     unsigned char  *yuvframe[2];
  46.     yuv_buffer    yuv;
  47.     FILE           *outfile;
  48.     ogg_stream_state to; /* take physical pages, weld into a logical
  49.                 stream of packets */
  50.     ogg_page         videopage; /* one Ogg bitstream page. Theora packets are inside */
  51.     ogg_packet       op; /* one raw packet of data for encode */
  52.     theora_state     td;
  53.     theora_info      ti;
  54.     theora_comment   tc;
  55.     virtual void frameCaptured() {}; /* to update UI status indicator */
  56. };
  57. #endif // _OGGTHEORACAPTURE_H_