Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/world_entities/recorder.h @ 9002

Last change on this file since 9002 was 7221, checked in by bensch, 19 years ago

orxonox/trunk: merged the std-branche back, it runs on windows and Linux

svn merge https://svn.orxonox.net/orxonox/branches/std . -r7202:HEAD

File size: 1.5 KB
Line 
1/*!
2 * @file recorder.h
3 *
4 */
5
6#ifndef _RECORDER_H
7#define _RECORDER_H
8
9#include "sdlincl.h"
10
11#ifdef HAVE_AVFORMAT_H
12  #include <avformat.h>
13#else
14  #include <ffmpeg/avformat.h>
15#endif
16
17#include "glincl.h"
18#include "world_entity.h"
19
20class Recorder : public WorldEntity
21{
22  public:
23    Recorder (const TiXmlElement* root = NULL);
24    virtual ~Recorder ();
25
26    virtual void draw () const;
27    virtual void tick (float dt);
28
29    virtual void loadParams(const TiXmlElement* root);
30
31  private:
32    void initVideo(const std::string& filename);
33    void addVideoStream();
34    void openVideo();
35    void closeVideo();
36    void allocPicture();
37    void writeVideoFrame();
38    void fillYuvImage();
39
40    void setStreamDuration(float duration);
41    void setFPS(float fps);
42
43
44  private:
45    AVFrame*            picture;
46    uint8_t*            buffer;
47    int                 frame_count;
48    int                 buffer_size;
49
50    AVOutputFormat*     output_format;
51    AVFormatContext*    format_context;
52    AVCodecContext*     codec_context;
53    AVCodec*            codec;
54    AVStream*           video_stream;
55    AVPacket            packet;
56    double              video_pts;
57
58    uint8_t*            picture_buf;
59    int                 size;
60
61    int                 height;
62    int                 width;
63    float               time;
64
65    float               stream_duration;
66    float               stream_frame_rate;
67    int                 stream_nb_frames;
68
69    AVFrame*            RGB_frame;
70};
71
72#endif /* _RECORDER_H */
Note: See TracBrowser for help on using the repository browser.