* Dump the libavformat string again in Sniff().
* Separate TRACE output for seeking related methods. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@31435 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
a78909c607
commit
5d9b65c488
@ -31,10 +31,12 @@ extern "C" {
|
|||||||
#ifdef TRACE_AVFORMAT_READER
|
#ifdef TRACE_AVFORMAT_READER
|
||||||
# define TRACE printf
|
# define TRACE printf
|
||||||
# define TRACE_IO(a...)
|
# define TRACE_IO(a...)
|
||||||
|
# define TRACE_SEEK(a...)
|
||||||
# define TRACE_PACKET(a...)
|
# define TRACE_PACKET(a...)
|
||||||
#else
|
#else
|
||||||
# define TRACE(a...)
|
# define TRACE(a...)
|
||||||
# define TRACE_IO(a...)
|
# define TRACE_IO(a...)
|
||||||
|
# define TRACE_SEEK(a...)
|
||||||
# define TRACE_PACKET(a...)
|
# define TRACE_PACKET(a...)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -547,12 +549,12 @@ AVFormatReader::StreamCookie::Seek(uint32 flags, int64* frame,
|
|||||||
return B_NO_INIT;
|
return B_NO_INIT;
|
||||||
|
|
||||||
if ((flags & B_MEDIA_SEEK_CLOSEST_FORWARD) != 0) {
|
if ((flags & B_MEDIA_SEEK_CLOSEST_FORWARD) != 0) {
|
||||||
TRACE(" AVFormatReader::Seek() - B_MEDIA_SEEK_CLOSEST_FORWARD "
|
TRACE_SEEK(" AVFormatReader::Seek() - B_MEDIA_SEEK_CLOSEST_FORWARD "
|
||||||
"not supported.\n");
|
"not supported.\n");
|
||||||
return B_NOT_SUPPORTED;
|
return B_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
TRACE("AVFormatReader::StreamCookie::Seek(%ld, %s %s %s %s, %lld, "
|
TRACE_SEEK("AVFormatReader::StreamCookie::Seek(%ld, %s %s %s %s, %lld, "
|
||||||
"%lld)\n", Index(),
|
"%lld)\n", Index(),
|
||||||
(flags & B_MEDIA_SEEK_TO_FRAME) ? "B_MEDIA_SEEK_TO_FRAME" : "",
|
(flags & B_MEDIA_SEEK_TO_FRAME) ? "B_MEDIA_SEEK_TO_FRAME" : "",
|
||||||
(flags & B_MEDIA_SEEK_TO_TIME) ? "B_MEDIA_SEEK_TO_TIME" : "",
|
(flags & B_MEDIA_SEEK_TO_TIME) ? "B_MEDIA_SEEK_TO_TIME" : "",
|
||||||
@ -572,11 +574,11 @@ AVFormatReader::StreamCookie::Seek(uint32 flags, int64* frame,
|
|||||||
} else
|
} else
|
||||||
timeStamp = (int64_t)(*time / timeBase / 1000000.0);
|
timeStamp = (int64_t)(*time / timeBase / 1000000.0);
|
||||||
|
|
||||||
TRACE(" time: %.2fs -> %lld, current DTS: %lld (time_base: %f)\n",
|
TRACE_SEEK(" time: %.2fs -> %lld, current DTS: %lld (time_base: %f)\n",
|
||||||
*time / 1000000.0, timeStamp, fStream->cur_dts, timeBase);
|
*time / 1000000.0, timeStamp, fStream->cur_dts, timeBase);
|
||||||
|
|
||||||
if (av_seek_frame(fContext, Index(), timeStamp, 0) < 0) {
|
if (av_seek_frame(fContext, Index(), timeStamp, 0) < 0) {
|
||||||
TRACE(" av_seek_frame() failed.\n");
|
TRACE_SEEK(" av_seek_frame() failed.\n");
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -595,8 +597,8 @@ AVFormatReader::StreamCookie::FindKeyFrame(uint32 flags, int64* frame,
|
|||||||
if (fContext == NULL || fStream == NULL)
|
if (fContext == NULL || fStream == NULL)
|
||||||
return B_NO_INIT;
|
return B_NO_INIT;
|
||||||
|
|
||||||
TRACE("AVFormatReader::StreamCookie::FindKeyFrame(%ld, %s %s %s %s, %lld, "
|
TRACE_SEEK("AVFormatReader::StreamCookie::FindKeyFrame(%ld, %s %s %s %s, "
|
||||||
"%lld)\n", Index(),
|
"%lld, %lld)\n", Index(),
|
||||||
(flags & B_MEDIA_SEEK_TO_FRAME) ? "B_MEDIA_SEEK_TO_FRAME" : "",
|
(flags & B_MEDIA_SEEK_TO_FRAME) ? "B_MEDIA_SEEK_TO_FRAME" : "",
|
||||||
(flags & B_MEDIA_SEEK_TO_TIME) ? "B_MEDIA_SEEK_TO_TIME" : "",
|
(flags & B_MEDIA_SEEK_TO_TIME) ? "B_MEDIA_SEEK_TO_TIME" : "",
|
||||||
(flags & B_MEDIA_SEEK_CLOSEST_BACKWARD) ? "B_MEDIA_SEEK_CLOSEST_BACKWARD" : "",
|
(flags & B_MEDIA_SEEK_CLOSEST_BACKWARD) ? "B_MEDIA_SEEK_CLOSEST_BACKWARD" : "",
|
||||||
@ -616,7 +618,7 @@ AVFormatReader::StreamCookie::FindKeyFrame(uint32 flags, int64* frame,
|
|||||||
} else
|
} else
|
||||||
timeStamp = (int64_t)(*time / timeBase / 1000000.0);
|
timeStamp = (int64_t)(*time / timeBase / 1000000.0);
|
||||||
|
|
||||||
TRACE(" time: %.2fs -> %lld (time_base: %f)\n", *time / 1000000.0,
|
TRACE_SEEK(" time: %.2fs -> %lld (time_base: %f)\n", *time / 1000000.0,
|
||||||
timeStamp, timeBase);
|
timeStamp, timeBase);
|
||||||
|
|
||||||
int searchFlags = AVSEEK_FLAG_BACKWARD;
|
int searchFlags = AVSEEK_FLAG_BACKWARD;
|
||||||
@ -625,7 +627,7 @@ AVFormatReader::StreamCookie::FindKeyFrame(uint32 flags, int64* frame,
|
|||||||
|
|
||||||
int index = av_index_search_timestamp(fStream, timeStamp, searchFlags);
|
int index = av_index_search_timestamp(fStream, timeStamp, searchFlags);
|
||||||
if (index < 0) {
|
if (index < 0) {
|
||||||
TRACE(" av_index_search_timestamp() failed.\n");
|
TRACE_SEEK(" av_index_search_timestamp() failed.\n");
|
||||||
// Just seek to the beginning of the stream and assume it is a
|
// Just seek to the beginning of the stream and assume it is a
|
||||||
// keyframe...
|
// keyframe...
|
||||||
*frame = 0;
|
*frame = 0;
|
||||||
@ -637,10 +639,10 @@ AVFormatReader::StreamCookie::FindKeyFrame(uint32 flags, int64* frame,
|
|||||||
timeStamp = entry.timestamp;
|
timeStamp = entry.timestamp;
|
||||||
*time = (bigtime_t)(timeStamp * 1000000.0 * timeBase);
|
*time = (bigtime_t)(timeStamp * 1000000.0 * timeBase);
|
||||||
|
|
||||||
TRACE(" seeked time: %.2fs (%lld)\n", *time / 1000000.0, timeStamp);
|
TRACE_SEEK(" seeked time: %.2fs (%lld)\n", *time / 1000000.0, timeStamp);
|
||||||
if ((flags & B_MEDIA_SEEK_TO_FRAME) != 0) {
|
if ((flags & B_MEDIA_SEEK_TO_FRAME) != 0) {
|
||||||
*frame = timeStamp;//*time * frameRate / 1000000LL;
|
*frame = timeStamp;//*time * frameRate / 1000000LL;
|
||||||
TRACE(" seeked frame: %lld\n", *frame);
|
TRACE_SEEK(" seeked frame: %lld\n", *frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
return B_OK;
|
return B_OK;
|
||||||
@ -871,6 +873,10 @@ AVFormatReader::Sniff(int32* _streamCount)
|
|||||||
fStreams[0] = stream;
|
fStreams[0] = stream;
|
||||||
streamDeleter.Detach();
|
streamDeleter.Detach();
|
||||||
|
|
||||||
|
#ifdef TRACE_AVFORMAT_READER
|
||||||
|
dump_format(const_cast<AVFormatContext*>(stream->Context()), 0, "", 0);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (_streamCount != NULL)
|
if (_streamCount != NULL)
|
||||||
*_streamCount = streamCount;
|
*_streamCount = streamCount;
|
||||||
|
|
||||||
@ -1046,7 +1052,7 @@ status_t
|
|||||||
AVFormatReader::Seek(void* _cookie, uint32 seekTo, int64* frame,
|
AVFormatReader::Seek(void* _cookie, uint32 seekTo, int64* frame,
|
||||||
bigtime_t* time)
|
bigtime_t* time)
|
||||||
{
|
{
|
||||||
TRACE("AVFormatReader::Seek()\n");
|
TRACE_SEEK("AVFormatReader::Seek()\n");
|
||||||
|
|
||||||
BAutolock _(fStreamLock);
|
BAutolock _(fStreamLock);
|
||||||
|
|
||||||
@ -1059,7 +1065,7 @@ status_t
|
|||||||
AVFormatReader::FindKeyFrame(void* _cookie, uint32 flags, int64* frame,
|
AVFormatReader::FindKeyFrame(void* _cookie, uint32 flags, int64* frame,
|
||||||
bigtime_t* time)
|
bigtime_t* time)
|
||||||
{
|
{
|
||||||
TRACE("AVFormatReader::FindKeyFrame()\n");
|
TRACE_SEEK("AVFormatReader::FindKeyFrame()\n");
|
||||||
|
|
||||||
BAutolock _(fStreamLock);
|
BAutolock _(fStreamLock);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user