3#ifndef RAGE_MOVIE_TEXTURE_FFMPEG_H
4#define RAGE_MOVIE_TEXTURE_FFMPEG_H
6#include "MovieTexture_Generic.h"
11#include <libavformat/avformat.h>
12#include <libswscale/swscale.h>
13#include <libavutil/pixdesc.h>
17#define STEPMANIA_FFMPEG_BUFFER_SIZE 4096
18static const int sws_flags = SWS_BICUBIC;
25 static void RegisterProtocols();
29 bool bPreferHighColor,
31 MovieDecoderPixelFormatYCbCr& fmtout);
42 bool bPreferHighColor,
44 MovieDecoderPixelFormatYCbCr& fmtout);
53 std::string Open(
const std::string& sFile);
58 int DecodeFrame(
float fTargetTime);
60 int GetWidth()
const {
return m_pStream->codec->width; }
61 int GetHeight()
const {
return m_pStream->codec->height; }
63 RageSurface* CreateCompatibleSurface(
int iTextureWidth,
65 bool bPreferHighColor,
66 MovieDecoderPixelFormatYCbCr& fmtout);
68 float GetTimestamp()
const;
69 float GetFrameDuration()
const;
73 std::string OpenCodec();
75 int DecodePacket(
float fTargetTime);
77 avcodec::AVStream* m_pStream;
78 avcodec::AVFrame* m_Frame;
79 avcodec::PixelFormat m_AVTexfmt;
80 avcodec::SwsContext* m_swsctx;
82 avcodec::AVFormatContext* m_fctx;
84 float m_fTimestampOffset;
85 float m_fLastFrameDelay;
88 unsigned char* m_buffer;
89 avcodec::AVIOContext* m_avioContext;
91 avcodec::AVPacket m_Packet;
92 int m_iCurrentPacketOffset;
101static struct AVPixelFormat_t
105 avcodec::PixelFormat pf;
107 bool bByteSwapOnLittleEndian;
108 MovieDecoderPixelFormatYCbCr YUV;
109} AVPixelFormats[] = { {
111 { 0xFF000000, 0x00FF0000, 0x0000FF00, 0x000000FF },
112 avcodec::PIX_FMT_YUYV422,
115 PixelFormatYCbCr_YUYV422,
119 { 0x0000FF00, 0x00FF0000, 0xFF000000, 0x000000FF },
120 avcodec::PIX_FMT_BGRA,
123 PixelFormatYCbCr_Invalid,
127 { 0x00FF0000, 0x0000FF00, 0x000000FF, 0xFF000000 },
128 avcodec::PIX_FMT_ARGB,
131 PixelFormatYCbCr_Invalid,
158 { 0xFF0000, 0x00FF00, 0x0000FF, 0x000000 },
159 avcodec::PIX_FMT_RGB24,
162 PixelFormatYCbCr_Invalid,
166 { 0x0000FF, 0x00FF00, 0xFF0000, 0x000000 },
167 avcodec::PIX_FMT_BGR24,
170 PixelFormatYCbCr_Invalid,
174 { 0x7C00, 0x03E0, 0x001F, 0x0000 },
175 avcodec::PIX_FMT_RGB555,
178 PixelFormatYCbCr_Invalid,
185 PixelFormatYCbCr_Invalid } };
Definition MovieTexture_FFMpeg.h:48
Definition MovieTexture_Generic.h:20
Definition MovieTexture_FFMpeg.h:21
Definition MovieTexture_Generic.h:83
Definition MovieTexture_FFMpeg.h:35
Definition MovieTexture.h:37
Definition MovieTexture.h:12
Definition RageSurface.h:90
Definition RageTextureID.h:12