AvTranscoder  0.9.4
C++APIforLibav/FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
VideoCodec.cpp
Go to the documentation of this file.
1 #include "VideoCodec.hpp"
2 
3 #include <cmath>
4 #include <cassert>
5 
6 namespace avtranscoder
7 {
8 
9 VideoCodec::VideoCodec(const ECodecType type, const std::string& codecName)
10  : ICodec(type, codecName)
11 {
12 }
13 
14 VideoCodec::VideoCodec(const ECodecType type, const AVCodecID codecId)
15  : ICodec(type, codecId)
16 {
17 }
18 
19 VideoCodec::VideoCodec(const ECodecType type, AVCodecContext& avCodecContext)
20  : ICodec(type, avCodecContext)
21 {
22 }
23 
25 {
26  assert(_avCodecContext != NULL);
27  VideoFrameDesc videoFrameDesc(_avCodecContext->width, _avCodecContext->height, _avCodecContext->pix_fmt);
28  double fps = 1.0 * _avCodecContext->time_base.den / (_avCodecContext->time_base.num * _avCodecContext->ticks_per_frame);
29  if(!std::isinf(fps))
30  videoFrameDesc._fps = fps;
31  return videoFrameDesc;
32 }
33 
35 {
36  _avCodecContext->width = videoFrameDesc._width;
37  _avCodecContext->height = videoFrameDesc._height;
38  _avCodecContext->pix_fmt = videoFrameDesc._pixelFormat;
39  _avCodecContext->time_base.num = 1;
40  _avCodecContext->time_base.den = videoFrameDesc._fps;
41  _avCodecContext->ticks_per_frame = 1;
42 }
43 }
Description to create a video frame.
Definition: VideoFrame.hpp:21
#define AVCodecID
Definition: common.hpp:45
void setImageParameters(const VideoFrameDesc &videoFrameDesc)
Definition: VideoCodec.cpp:34
AVCodecContext * _avCodecContext
Full codec instance description (has ownership)
Definition: ICodec.hpp:66
ECodecType
Define if a codec is for encoding or decoding.
Definition: ICodec.hpp:19
VideoCodec(const ECodecType type, const std::string &codecName="")
Definition: VideoCodec.cpp:9
VideoFrameDesc getVideoFrameDesc() const
Definition: VideoCodec.cpp:24
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy