AVCodecEncoder/AVFormatReader: Remove kNoPTSValue hack
This commit is contained in:
@@ -533,11 +533,6 @@ AVCodecEncoder::_CloseCodecIfNeeded()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static const int64 kNoPTSValue = 0x8000000000000000LL;
|
|
||||||
// NOTE: For some reasons, I have trouble with the avcodec.h define:
|
|
||||||
// #define AV_NOPTS_VALUE INT64_C(0x8000000000000000)
|
|
||||||
// INT64_C is not defined here.
|
|
||||||
|
|
||||||
status_t
|
status_t
|
||||||
AVCodecEncoder::_EncodeAudio(const void* _buffer, int64 frameCount,
|
AVCodecEncoder::_EncodeAudio(const void* _buffer, int64 frameCount,
|
||||||
media_encode_info* info)
|
media_encode_info* info)
|
||||||
|
|||||||
@@ -49,9 +49,6 @@ extern "C" {
|
|||||||
#define ERROR(a...) fprintf(stderr, a)
|
#define ERROR(a...) fprintf(stderr, a)
|
||||||
|
|
||||||
|
|
||||||
static const int64 kNoPTSValue = AV_NOPTS_VALUE;
|
|
||||||
|
|
||||||
|
|
||||||
static uint32
|
static uint32
|
||||||
avformat_to_beos_byte_order(AVSampleFormat format)
|
avformat_to_beos_byte_order(AVSampleFormat format)
|
||||||
{
|
{
|
||||||
@@ -432,9 +429,9 @@ StreamBase::Duration() const
|
|||||||
// for a couple of streams and are in line with the documentation, but
|
// for a couple of streams and are in line with the documentation, but
|
||||||
// unfortunately, libavformat itself seems to set the time_base and
|
// unfortunately, libavformat itself seems to set the time_base and
|
||||||
// duration wrongly sometimes. :-(
|
// duration wrongly sometimes. :-(
|
||||||
if ((int64)fStream->duration != kNoPTSValue)
|
if ((int64)fStream->duration != AV_NOPTS_VALUE)
|
||||||
return _ConvertFromStreamTimeBase(fStream->duration);
|
return _ConvertFromStreamTimeBase(fStream->duration);
|
||||||
else if ((int64)fContext->duration != kNoPTSValue)
|
else if ((int64)fContext->duration != AV_NOPTS_VALUE)
|
||||||
return (bigtime_t)fContext->duration;
|
return (bigtime_t)fContext->duration;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@@ -508,7 +505,7 @@ StreamBase::Seek(uint32 flags, int64* frame, bigtime_t* time)
|
|||||||
// know where we really seeked.
|
// know where we really seeked.
|
||||||
fReusePacket = false;
|
fReusePacket = false;
|
||||||
if (_NextPacket(true) == B_OK) {
|
if (_NextPacket(true) == B_OK) {
|
||||||
while (fPacket.pts == kNoPTSValue) {
|
while (fPacket.pts == AV_NOPTS_VALUE) {
|
||||||
fReusePacket = false;
|
fReusePacket = false;
|
||||||
if (_NextPacket(true) != B_OK)
|
if (_NextPacket(true) != B_OK)
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
@@ -642,7 +639,7 @@ StreamBase::Seek(uint32 flags, int64* frame, bigtime_t* time)
|
|||||||
|
|
||||||
fReusePacket = false;
|
fReusePacket = false;
|
||||||
if (_NextPacket(true) == B_OK) {
|
if (_NextPacket(true) == B_OK) {
|
||||||
if (fPacket.pts != kNoPTSValue)
|
if (fPacket.pts != AV_NOPTS_VALUE)
|
||||||
foundTime = _ConvertFromStreamTimeBase(fPacket.pts);
|
foundTime = _ConvertFromStreamTimeBase(fPacket.pts);
|
||||||
else
|
else
|
||||||
TRACE_SEEK(" no PTS in packet after seeking\n");
|
TRACE_SEEK(" no PTS in packet after seeking\n");
|
||||||
@@ -704,9 +701,9 @@ StreamBase::GetNextChunk(const void** chunkBuffer,
|
|||||||
// series (even for videos that contain B-frames).
|
// series (even for videos that contain B-frames).
|
||||||
// \see http://git.videolan.org/?p=ffmpeg.git;a=blob;f=libavformat/avformat.h;h=1e8a6294890d580cd9ebc684eaf4ce57c8413bd8;hb=9153b33a742c4e2a85ff6230aea0e75f5a8b26c2#l1623
|
// \see http://git.videolan.org/?p=ffmpeg.git;a=blob;f=libavformat/avformat.h;h=1e8a6294890d580cd9ebc684eaf4ce57c8413bd8;hb=9153b33a742c4e2a85ff6230aea0e75f5a8b26c2#l1623
|
||||||
bigtime_t presentationTimeStamp;
|
bigtime_t presentationTimeStamp;
|
||||||
if (fPacket.dts != kNoPTSValue)
|
if (fPacket.dts != AV_NOPTS_VALUE)
|
||||||
presentationTimeStamp = fPacket.dts;
|
presentationTimeStamp = fPacket.dts;
|
||||||
else if (fPacket.pts != kNoPTSValue)
|
else if (fPacket.pts != AV_NOPTS_VALUE)
|
||||||
presentationTimeStamp = fPacket.pts;
|
presentationTimeStamp = fPacket.pts;
|
||||||
else
|
else
|
||||||
presentationTimeStamp = lastStreamDTS;
|
presentationTimeStamp = lastStreamDTS;
|
||||||
@@ -740,7 +737,7 @@ StreamBase::GetNextChunk(const void** chunkBuffer,
|
|||||||
// static bigtime_t lastPrintTime = system_time();
|
// static bigtime_t lastPrintTime = system_time();
|
||||||
// static BLocker printLock;
|
// static BLocker printLock;
|
||||||
// if (fStream->index < 2) {
|
// if (fStream->index < 2) {
|
||||||
// if (fPacket.pts != kNoPTSValue)
|
// if (fPacket.pts != AV_NOPTS_VALUE)
|
||||||
// pts[fStream->index] = _ConvertFromStreamTimeBase(fPacket.pts);
|
// pts[fStream->index] = _ConvertFromStreamTimeBase(fPacket.pts);
|
||||||
// printLock.Lock();
|
// printLock.Lock();
|
||||||
// bigtime_t now = system_time();
|
// bigtime_t now = system_time();
|
||||||
@@ -872,7 +869,7 @@ StreamBase::_ConvertToStreamTimeBase(bigtime_t time) const
|
|||||||
{
|
{
|
||||||
int64 timeStamp = int64_t((double)time * fStream->time_base.den
|
int64 timeStamp = int64_t((double)time * fStream->time_base.den
|
||||||
/ (1000000.0 * fStream->time_base.num) + 0.5);
|
/ (1000000.0 * fStream->time_base.num) + 0.5);
|
||||||
if (fStream->start_time != kNoPTSValue)
|
if (fStream->start_time != AV_NOPTS_VALUE)
|
||||||
timeStamp += fStream->start_time;
|
timeStamp += fStream->start_time;
|
||||||
return timeStamp;
|
return timeStamp;
|
||||||
}
|
}
|
||||||
@@ -881,7 +878,7 @@ StreamBase::_ConvertToStreamTimeBase(bigtime_t time) const
|
|||||||
bigtime_t
|
bigtime_t
|
||||||
StreamBase::_ConvertFromStreamTimeBase(int64_t time) const
|
StreamBase::_ConvertFromStreamTimeBase(int64_t time) const
|
||||||
{
|
{
|
||||||
if (fStream->start_time != kNoPTSValue)
|
if (fStream->start_time != AV_NOPTS_VALUE)
|
||||||
time -= fStream->start_time;
|
time -= fStream->start_time;
|
||||||
|
|
||||||
return bigtime_t(1000000.0 * time * fStream->time_base.num
|
return bigtime_t(1000000.0 * time * fStream->time_base.num
|
||||||
@@ -1207,7 +1204,7 @@ AVFormatReader::Stream::GetStreamInfo(int64* frameCount,
|
|||||||
TRACE(" frameRate: %.4f\n", frameRate);
|
TRACE(" frameRate: %.4f\n", frameRate);
|
||||||
|
|
||||||
#ifdef TRACE_AVFORMAT_READER
|
#ifdef TRACE_AVFORMAT_READER
|
||||||
if (fStream->start_time != kNoPTSValue) {
|
if (fStream->start_time != AV_NOPTS_VALUE) {
|
||||||
bigtime_t startTime = _ConvertFromStreamTimeBase(fStream->start_time);
|
bigtime_t startTime = _ConvertFromStreamTimeBase(fStream->start_time);
|
||||||
TRACE(" start_time: %lld or %.5fs\n", startTime,
|
TRACE(" start_time: %lld or %.5fs\n", startTime,
|
||||||
startTime / 1000000.0);
|
startTime / 1000000.0);
|
||||||
|
|||||||
Reference in New Issue
Block a user