00001 #include <QPointer>
00002 #include "recordingprofile.h"
00003 #include "fifowriter.h"
00004 #include "transcodedefs.h"
00005 #include "programtypes.h"
00006 #include "playercontext.h"
00007
00008 class ProgramInfo;
00009 class NuppelVideoRecorder;
00010 class MythPlayer;
00011 class RingBuffer;
00012
00013 typedef vector<struct kfatable_entry> KFATable;
00014
00015 class Transcode : public QObject
00016 {
00017 public:
00018 Transcode(ProgramInfo *pginfo);
00019 ~Transcode();
00020 int TranscodeFile(
00021 const QString &inputname,
00022 const QString &outputname,
00023 const QString &profileName,
00024 bool honorCutList, bool framecontrol, int jobID,
00025 QString fifodir, bool fifo_info, bool cleanCut, frm_dir_map_t &deleteMap,
00026 int AudioTrackNo, bool passthru = false);
00027 void ShowProgress(bool val) { showprogress = val; }
00028 void SetRecorderOptions(QString options) { recorderOptions = options; }
00029 void SetAVFMode(void) { avfMode = true; }
00030 void SetHLSMode(void) { hlsMode = true; }
00031 void SetHLSStreamID(int streamid) { hlsStreamID = streamid; }
00032 void SetHLSMaxSegments(int segments) { hlsMaxSegments = segments; }
00033 void SetCMDContainer(QString container) { cmdContainer = container; }
00034 void SetCMDAudioCodec(QString codec) { cmdAudioCodec = codec; }
00035 void SetCMDVideoCodec(QString codec) { cmdVideoCodec = codec; }
00036 void SetCMDHeight(int height) { cmdHeight = height; }
00037 void SetCMDWidth(int width) { cmdWidth = width; }
00038 void SetCMDBitrate(int bitrate) { cmdBitrate = bitrate; }
00039 void SetCMDAudioBitrate(int bitrate) { cmdAudioBitrate = bitrate; }
00040 void DisableAudioOnlyHLS(void) { hlsDisableAudioOnly = true; }
00041
00042 private:
00043 bool GetProfile(QString profileName, QString encodingType, int height,
00044 int frameRate);
00045 void ReencoderAddKFA(long curframe, long lastkey, long num_keyframes);
00046
00047 private:
00048 ProgramInfo *m_proginfo;
00049 RecordingProfile profile;
00050 int keyframedist;
00051 NuppelVideoRecorder *nvr;
00052 MythPlayer *player;
00053 QPointer<PlayerContext> player_ctx;
00054 RingBuffer *inRingBuffer;
00055 RingBuffer *outRingBuffer;
00056 FIFOWriter *fifow;
00057 KFATable *kfa_table;
00058 bool showprogress;
00059 QString recorderOptions;
00060 bool avfMode;
00061 bool hlsMode;
00062 int hlsStreamID;
00063 bool hlsDisableAudioOnly;
00064 int hlsMaxSegments;
00065 QString cmdContainer;
00066 QString cmdAudioCodec;
00067 QString cmdVideoCodec;
00068 int cmdWidth;
00069 int cmdHeight;
00070 int cmdBitrate;
00071 int cmdAudioBitrate;
00072 };
00073
00074