projects
/
dcpomatic.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Rename PRORES -> PRORES_HQ
[dcpomatic.git]
/
src
/
lib
/
ffmpeg_file_encoder.h
diff --git
a/src/lib/ffmpeg_file_encoder.h
b/src/lib/ffmpeg_file_encoder.h
index 1c23d59027c0359f5bb670ad52db2a407e574305..fd716d47c4a3f980b7cc7d057b41e29c65bdafd8 100644
(file)
--- a/
src/lib/ffmpeg_file_encoder.h
+++ b/
src/lib/ffmpeg_file_encoder.h
@@
-18,23
+18,37
@@
*/
*/
+
#ifndef DCPOMATIC_FFMPEG_FILE_ENCODER_H
#define DCPOMATIC_FFMPEG_FILE_ENCODER_H
#ifndef DCPOMATIC_FFMPEG_FILE_ENCODER_H
#define DCPOMATIC_FFMPEG_FILE_ENCODER_H
+
+#include "audio_mapping.h"
+#include "dcpomatic_time.h"
#include "encoder.h"
#include "event_history.h"
#include "encoder.h"
#include "event_history.h"
-#include "audio_mapping.h"
#include "log.h"
#include <dcp/key.h>
#include "log.h"
#include <dcp/key.h>
+#include <dcp/warnings.h>
+LIBDCP_DISABLE_WARNINGS
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
}
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
}
+LIBDCP_ENABLE_WARNINGS
class ExportAudioStream;
class ExportAudioStream;
+enum class ExportFormat
+{
+ PRORES_HQ,
+ H264_AAC,
+ SUBTITLES_DCP
+};
+
+
class FFmpegFileEncoder
{
public:
class FFmpegFileEncoder
{
public:
@@
-47,14
+61,12
@@
public:
bool audio_stream_per_channel,
int x264_crf,
boost::filesystem::path output
bool audio_stream_per_channel,
int x264_crf,
boost::filesystem::path output
-#ifdef DCPOMATIC_VARIANT_SWAROOP
- , boost::optional<dcp::Key> key
- , boost::optional<std::string> id
-#endif
);
);
- void video (boost::shared_ptr<PlayerVideo>, dcpomatic::DCPTime);
- void audio (boost::shared_ptr<AudioBuffers>);
+ ~FFmpegFileEncoder ();
+
+ void video (std::shared_ptr<PlayerVideo>, dcpomatic::DCPTime);
+ void audio (std::shared_ptr<AudioBuffers>);
void subtitle (PlayerText, dcpomatic::DCPTimePeriod);
void flush ();
void subtitle (PlayerText, dcpomatic::DCPTimePeriod);
void flush ();
@@
-70,15
+82,15
@@
private:
static void buffer_free(void* opaque, uint8_t* data);
void buffer_free2(uint8_t* data);
static void buffer_free(void* opaque, uint8_t* data);
void buffer_free2(uint8_t* data);
- AVCodec
* _video_codec
;
- AVCodecContext* _video_codec_context;
- std::vector<
boost::shared_ptr<ExportAudioStream>
> _audio_streams;
+ AVCodec
const * _video_codec = nullptr
;
+ AVCodecContext* _video_codec_context
= nullptr
;
+ std::vector<
std::shared_ptr<ExportAudioStream>
> _audio_streams;
bool _audio_stream_per_channel;
bool _audio_stream_per_channel;
- AVFormatContext* _format_context;
- AVStream* _video_stream;
+ AVFormatContext* _format_context
= nullptr
;
+ AVStream* _video_stream
= nullptr
;
AVPixelFormat _pixel_format;
AVSampleFormat _sample_format;
AVPixelFormat _pixel_format;
AVSampleFormat _sample_format;
- AVDictionary* _video_options;
+ AVDictionary* _video_options
= nullptr
;
std::string _video_codec_name;
std::string _audio_codec_name;
int _audio_channels;
std::string _video_codec_name;
std::string _audio_codec_name;
int _audio_channels;
@@
-88,14
+100,14
@@
private:
int _video_frame_rate;
int _audio_frame_rate;
int _video_frame_rate;
int _audio_frame_rate;
- int64_t _audio_frames;
+ int64_t _audio_frames
= 0
;
-
boost
::shared_ptr<AudioBuffers> _pending_audio;
+
std
::shared_ptr<AudioBuffers> _pending_audio;
/** Store of shared_ptr<Image> to keep them alive whilst raw pointers into
their data have been passed to FFmpeg.
*/
/** Store of shared_ptr<Image> to keep them alive whilst raw pointers into
their data have been passed to FFmpeg.
*/
- std::map<uint8_t*,
boost::shared_ptr<const Image>
> _pending_images;
+ std::map<uint8_t*,
std::shared_ptr<const Image>
> _pending_images;
boost::mutex _pending_images_mutex;
static int _video_stream_index;
boost::mutex _pending_images_mutex;
static int _video_stream_index;