This repository was archived by the owner on Aug 15, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 10
Expand file tree
/
Copy pathMovieEncoder.h
More file actions
98 lines (73 loc) · 2.34 KB
/
MovieEncoder.h
File metadata and controls
98 lines (73 loc) · 2.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/*
* Copyright 2015-2023 Stefano Ceccherini <stefano.ceccherini@gmail.com>
* All rights reserved. Distributed under the terms of the MIT license.
*/
#ifndef __MOVIE_ENCODER_H
#define __MOVIE_ENCODER_H
#include <MediaDefs.h>
#include <MediaFile.h>
#include <Path.h>
#include <queue>
class BBitmap;
class FramesList;
class MovieEncoder {
public:
MovieEncoder();
~MovieEncoder();
void DisposeData();
void Cancel();
status_t SetSource(FramesList* fileList);
status_t SetCursorQueue(std::queue<BPoint> *queue);
status_t SetOutputFile(const char *fileName);
BPath OutputFile() const;
status_t SetDestFrame(const BRect &rect);
void SetColorSpace(const color_space &space);
status_t SetQuality(const float &quality);
status_t SetThreadPriority(const int32 &value);
status_t SetMessenger(const BMessenger &messenger);
media_file_format MediaFileFormat() const;
media_format_family MediaFormatFamily() const;
media_format MediaFormat() const;
media_codec_info MediaCodecInfo() const;
void SetMediaFileFormat(const media_file_format&);
void SetMediaFormatFamily(const media_format_family &);
void SetMediaFormat(const media_format &);
void SetMediaCodecInfo(const media_codec_info &);
thread_id EncodeThreaded();
private:
void ResetConfiguration();
BBitmap *GetCursorBitmap(const uint8 *data);
status_t PopCursorPosition(BPoint &point);
status_t _CreateFile(const char* path,
const media_file_format& mff,
const media_format& inputFormat,
const media_codec_info& mci,
float quality = -1);
status_t _WriteFrame(const BBitmap* bitmap, int32 frameNum, bool isKeyFrame);
status_t _CloseFile();
static int32 EncodeStarter(void *arg);
status_t _EncoderThread();
status_t _ApplyImageFilters();
status_t _WriteRawFrames();
void _HandleEncodingFinished(const status_t& status,
const int32& numFrames = 0);
status_t _PostEncodingAction(const BPath& path, int32 numFrames, int32 fps);
thread_id fEncoderThread;
bool fKillThread;
int32 fPriority;
BMessenger fMessenger;
FramesList* fFileList;
std::queue<BPoint> *fCursorQueue;
BPath fOutputFile;
BPath fTempPath;
BRect fDestFrame;
color_space fColorSpace;
BMediaFile* fMediaFile;
BMediaTrack* fMediaTrack;
bool fHeaderCommitted;
media_file_format fFileFormat;
media_format_family fFamily;
media_format fFormat;
media_codec_info fCodecInfo;
};
#endif