summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Stebbins <jstebbins.hb@gmail.com>2017-04-09 10:33:26 -0600
committerJohn Stebbins <jstebbins.hb@gmail.com>2017-04-09 10:33:26 -0600
commit3b080f5c7d5c1aa8ac80a37a8adb5db0a60b6aae (patch)
tree96e066b073c32dd086ef9f13290bbc77f28ec50a
parent44776e14258896fa651a8f7d4c8de3c94553caf2 (diff)
Fix raw video timestamps
Raw video has no timestamps. But we drop frames in sync that have no timestamps. So detect raw video and extrapolate timestamps from framerate.
-rw-r--r--libhb/common.h1
-rw-r--r--libhb/decavcodec.c2
-rw-r--r--libhb/stream.c4
3 files changed, 7 insertions, 0 deletions
diff --git a/libhb/common.h b/libhb/common.h
index dc7ebb3ea..e6ef1270d 100644
--- a/libhb/common.h
+++ b/libhb/common.h
@@ -1016,6 +1016,7 @@ struct hb_title_s
// set if video stream doesn't have IDR frames
#define HBTF_NO_IDR (1 << 0)
#define HBTF_SCAN_COMPLETE (1 << 1)
+#define HBTF_RAW_VIDEO (1 << 2)
// whether OpenCL scaling is supported for this source
int opencl_support;
diff --git a/libhb/decavcodec.c b/libhb/decavcodec.c
index e038efd6d..7b94274e1 100644
--- a/libhb/decavcodec.c
+++ b/libhb/decavcodec.c
@@ -1425,6 +1425,8 @@ static int decavcodecvInit( hb_work_object_t * w, hb_job_t * job )
pv->title = job->title;
else
pv->title = w->title;
+ if (pv->title->flags & HBTF_RAW_VIDEO)
+ pv->next_pts = 0;
hb_buffer_list_clear(&pv->list);
#ifdef USE_QSV
diff --git a/libhb/stream.c b/libhb/stream.c
index baa53018f..76d7fe4f3 100644
--- a/libhb/stream.c
+++ b/libhb/stream.c
@@ -5554,6 +5554,10 @@ static hb_title_t *ffmpeg_title_scan( hb_stream_t *stream, hb_title_t *title )
title->video_codec = WORK_DECAVCODECV;
title->video_codec_param = codecpar->codec_id;
+ if (ic->iformat->raw_codec_id != AV_CODEC_ID_NONE)
+ {
+ title->flags |= HBTF_RAW_VIDEO;
+ }
}
else if (ic->streams[i]->codecpar->codec_type == AVMEDIA_TYPE_AUDIO &&
avcodec_find_decoder( ic->streams[i]->codecpar->codec_id))