[Adaptation Layer] Added rive-tizen adaptation layer class.
[platform/core/uifw/rive-tizen.git] / submodule / skia / recorder / include / writer.hpp
1 #ifndef WRITER_HPP
2 #define WRITER_HPP
3
4 #include "util.hxx"
5 #include <cstdio>
6 #include <iostream>
7 #include <memory>
8 #include <stdexcept>
9 #include <stdio.h>
10 #include <string>
11
12 extern "C"
13 {
14 #include <libavcodec/avcodec.h>
15 #include <libavcodec/avfft.h>
16
17 #include <libavfilter/buffersink.h>
18 #include <libavfilter/buffersrc.h>
19
20 #include <libavformat/avformat.h>
21 #include <libavformat/avio.h>
22
23 #include <libavutil/channel_layout.h>
24 #include <libavutil/common.h>
25 #include <libavutil/file.h>
26 #include <libavutil/imgutils.h>
27 #include <libavutil/mathematics.h>
28 #include <libavutil/opt.h>
29 #include <libavutil/pixdesc.h>
30 #include <libavutil/samplefmt.h>
31 #include <libavutil/time.h>
32
33 #include <libswscale/swscale.h>
34 }
35
36 class MovieWriter
37 {
38 public:
39         MovieWriter(const char* _destination,
40                     int _width,
41                     int _height,
42                     int _fps,
43                     int bitrate = 5000);
44         void writeFrame(int frameNumber, const uint8_t* const* pixelData);
45         void writeHeader();
46         void finalize();
47
48 private:
49         AVFrame* videoFrame;
50         AVCodecContext* cctx;
51         AVStream* videoStream;
52         AVOutputFormat* oformat;
53         AVFormatContext* ofctx;
54         AVCodec* codec;
55         SwsContext* swsCtx;
56         AVPixelFormat pixel_format;
57         const char* destinationPath;
58         void initialize();
59         void initialise_av_frame();
60         int width, height, fps, bitrate;
61 };
62
63 #endif