ffconv/ffcpp/Packet.cpp

54 lines
903 B
C++

#include "Packet.h"
#include <stdexcept>
namespace ffcpp {
Packet::Packet() {
_packet.data = nullptr;
_packet.size = 0;
av_init_packet(&_packet);
}
Packet::Packet(AVPacket packet): _packet(packet) {
}
Packet::Packet(Packet&& packet) {
*this = std::move(packet);
}
Packet& Packet::operator=(Packet&& packet) {
_packet = packet._packet;
packet._packet.size = 0;
packet._packet.data = nullptr;
return *this;
}
Packet::~Packet() {
if(_packet.data) {
av_free_packet(&_packet);
}
}
Packet::operator bool() {
return (_packet.data != nullptr);
}
Packet::operator AVPacket*() {
return &_packet;
}
int Packet::streamIndex() const {
return _packet.stream_index;
}
void Packet::setStreamIndex(int index) {
_packet.stream_index = index;
}
void Packet::rescaleTimestamps(AVRational from, AVRational to) {
av_packet_rescale_ts(&_packet, from, to);
}
}