/* Copyright (C) 2011 Arnaud Champenois arthelion92@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* FFMPEG C++ Wrapper Thanks to http://dranger.com/ */ #ifndef FFMEGPACKET_H #define FFMEGPACKET_H #include "ffmpegutils.h" #include class FFMPEGPacket { public: typedef enum { VIDEO_PACKET = 0, AUDIO_PACKET = 1 } Type; FFMPEGPacket(); ~FFMPEGPacket(); Type GetType() const { return mType; } bool IsValid() const { return mValidity; } void SetValidity(Type aType) { mValidity = true; mType = aType; } void Invalid() { if(mValidity) { mValidity = false; av_free_packet(&mPacket); } } AVPacket&GetPacket() { return mPacket; } int64_t GetDTS() const { return mPacket.dts; } int64_t GetStreamIndex() const { return mPacket.stream_index; } int64_t GetPos() const { return mPacket.pos; } void AddOffset(int64_t anOffset) { mPacket.dts += anOffset; mPacket.pts += anOffset; } bool IsKeyFrame() const { return (mPacket.flags & AV_PKT_FLAG_KEY); } private: FFMPEGPacket(const FFMPEGPacket&) {} FFMPEGPacket& operator =(const FFMPEGPacket&) { return *this;} AVPacket mPacket; Type mType; bool mValidity; }; #endif // FFMEGPACKET_H