~ubuntu-branches/ubuntu/trusty/libavg/trusty-proposed

« back to all changes in this revision

Viewing changes to src/player/VideoWriterThread.h

  • Committer: Package Import Robot
  • Author(s): OXullo Intersecans
  • Date: 2011-12-06 22:44:56 UTC
  • mfrom: (1.1.6)
  • Revision ID: package-import@ubuntu.com-20111206224456-qc7250z3ya1vi8s9
Tags: 1.7.0-0ubuntu1
* New upstream release (LP: #899183)
* Remove patches 0002-libav-0.7.patch, 0003-fglrx-segfault-on-startup.patch
  now merged to upstream
* Remove unnecessary .la files
* Update debian/watch file
* Fix debian/copyright dep-5 compliancy
* Update standards to version 3.9.2
* Add man pages for avg_checktouch, avg_checkvsync, avg_showsvg
* Minor debian/rules enhancement
* Add librsvg2-dev, libgdk-pixbuf2.0-dev to Build-Depends
* Proper transition to dh_python2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//
 
2
//  libavg - Media Playback Engine. 
 
3
//  Copyright (C) 2003-2011 Ulrich von Zadow
 
4
//
 
5
//  This library is free software; you can redistribute it and/or
 
6
//  modify it under the terms of the GNU Lesser General Public
 
7
//  License as published by the Free Software Foundation; either
 
8
//  version 2 of the License, or (at your option) any later version.
 
9
//
 
10
//  This library is distributed in the hope that it will be useful,
 
11
//  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
12
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
13
//  Lesser General Public License for more details.
 
14
//
 
15
//  You should have received a copy of the GNU Lesser General Public
 
16
//  License along with this library; if not, write to the Free Software
 
17
//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
18
//
 
19
//  Current versions can be found at www.libavg.de
 
20
//
 
21
 
 
22
#ifndef _VideoWriterThread_H_
 
23
#define _VideoWriterThread_H_
 
24
 
 
25
#include "../api.h"
 
26
 
 
27
#include "../base/WorkerThread.h"
 
28
#include "../graphics/Bitmap.h"
 
29
#include "../video/WrapFFMpeg.h"
 
30
 
 
31
#include <boost/shared_ptr.hpp>
 
32
#include <boost/thread.hpp>
 
33
 
 
34
 
 
35
#include <string>
 
36
 
 
37
namespace avg {
 
38
 
 
39
class AVG_API VideoWriterThread : public WorkerThread<VideoWriterThread>  {
 
40
    public:
 
41
        VideoWriterThread(CQueue& CmdQueue, const std::string& sFilename, IntPoint size,
 
42
                int frameRate, int qMin, int qMax);
 
43
        virtual ~VideoWriterThread();
 
44
 
 
45
        void encodeYUVFrame(BitmapPtr pBmp);
 
46
        void encodeFrame(BitmapPtr pBmp);
 
47
        void close();
 
48
 
 
49
    private:
 
50
        bool init();
 
51
        void open();
 
52
 
 
53
        // Called by base class
 
54
        virtual bool work();
 
55
        virtual void deinit();
 
56
 
 
57
        void setupVideoStream();
 
58
        void openVideoCodec();
 
59
 
 
60
        AVFrame* createFrame(::PixelFormat pixelFormat, IntPoint size);
 
61
 
 
62
        void convertRGBImage(BitmapPtr pSrcBmp);
 
63
        void convertYUVImage(BitmapPtr pSrcBmp);
 
64
        void writeFrame(AVFrame* pFrame);
 
65
 
 
66
        std::string m_sFilename;
 
67
        IntPoint m_Size;
 
68
        int m_FrameRate;
 
69
        int m_QMin;
 
70
        int m_QMax;
 
71
        
 
72
        AVOutputFormat* m_pOutputFormat;
 
73
        AVFormatContext* m_pOutputFormatContext;
 
74
        AVStream* m_pVideoStream;
 
75
        SwsContext* m_pFrameConversionContext;
 
76
        AVFrame* m_pConvertedFrame;
 
77
        unsigned char* m_pPictureBuffer;
 
78
        unsigned char* m_pVideoBuffer;
 
79
        int m_VideoBufferSize;
 
80
        PixelFormat m_StreamPixelFormat;
 
81
        int m_FramesWritten;
 
82
};
 
83
 
 
84
}
 
85
#endif