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