MythTV master
mythavformatwriter.h
Go to the documentation of this file.
1#ifndef AVFORMATWRITER_H_
2#define AVFORMATWRITER_H_
3
4// Qt
5#include <QList>
6
7// MythTV
8#include "libmythbase/mythconfig.h"
12
13extern "C" {
14#include "libavcodec/avcodec.h"
15#include "libavformat/avformat.h"
16}
17
19{
20 public:
21 MythAVFormatWriter() = default;
22 ~MythAVFormatWriter() override;
23
24 bool Init (void) override;
25 bool OpenFile (void) override;
26 bool CloseFile (void) override;
27 int WriteVideoFrame (MythVideoFrame *Frame) override;
28 int WriteAudioFrame (unsigned char *Buffer, int FrameNumber, std::chrono::milliseconds &Timecode) override;
29 int WriteTextFrame (int VBIMode, unsigned char *Buffer, int Length,
30 std::chrono::milliseconds Timecode, int PageNumber) override;
31 int WriteSeekTable (void) override;
32 bool SwitchToNextFile (void) override;
33
34 bool NextFrameIsKeyFrame (void);
35 bool ReOpen (const QString& Filename);
36
37 private:
38 bool openFileHelper();
39 AVStream* AddVideoStream (void);
40 bool OpenVideo (void);
41 AVStream* AddAudioStream (void);
42 bool OpenAudio (void);
43 AVFrame* AllocPicture (enum AVPixelFormat PixFmt);
44 void Cleanup (void);
45 AVRational GetCodecTimeBase (void);
46 static bool FindAudioFormat (AVCodecContext *Ctx, const AVCodec *Codec, AVSampleFormat Format);
47
48 MythAVFormatBuffer *m_avfBuffer { nullptr };
49 MythMediaBuffer *m_buffer { nullptr };
50 AVOutputFormat m_fmt { };
51 AVFormatContext *m_ctx { nullptr };
53 AVStream *m_videoStream { nullptr };
54 const AVCodec *m_avVideoCodec { nullptr };
55 AVStream *m_audioStream { nullptr };
56 const AVCodec *m_avAudioCodec { nullptr };
57 AVFrame *m_picture { nullptr };
58 AVFrame *m_audPicture { nullptr };
59 unsigned char *m_audioInBuf { nullptr };
60 unsigned char *m_audioInPBuf { nullptr };
61 QList<std::chrono::milliseconds> m_bufferedVideoFrameTimes;
63 QList<std::chrono::milliseconds> m_bufferedAudioFrameTimes;
64};
65
66#endif
67
68/* vim: set expandtab tabstop=4 shiftwidth=4: */
69
AVFrame AVFrame
QList< std::chrono::milliseconds > m_bufferedVideoFrameTimes
QList< std::chrono::milliseconds > m_bufferedAudioFrameTimes
MythAVFormatWriter()=default
QList< int > m_bufferedVideoFrameTypes
virtual bool CloseFile(void)=0
virtual int WriteSeekTable(void)=0
virtual bool OpenFile(void)=0
virtual bool SwitchToNextFile(void)=0
virtual bool Init(void)=0
virtual int WriteTextFrame(int VBIMode, unsigned char *Buffer, int Length, std::chrono::milliseconds Timecode, int PageNumber)=0
virtual int WriteAudioFrame(unsigned char *Buffer, int FrameNumber, std::chrono::milliseconds &Timecode)=0
virtual int WriteVideoFrame(MythVideoFrame *Frame)=0
Definition: tv.h:8
#define MTV_PUBLIC
Definition: mythtvexp.h:11