[FFmpeg-cvslog] Merge commit 'a2fd547839d3ef8f342b6f2c096d0887675d3b1a'
Clément Bœsch
git at videolan.org
Sun Jun 19 13:05:49 CEST 2016
ffmpeg | branch: master | Clément Bœsch <u at pkh.me> | Sun Jun 19 13:03:31 2016 +0200| [902862bb4be4492c040b7e3b6d657ebb4b36bbc7] | committer: Clément Bœsch
Merge commit 'a2fd547839d3ef8f342b6f2c096d0887675d3b1a'
* commit 'a2fd547839d3ef8f342b6f2c096d0887675d3b1a':
h264_refs: reorder functions to avoid forward declarations
Merged-by: Clément Bœsch <u at pkh.me>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=902862bb4be4492c040b7e3b6d657ebb4b36bbc7
---
libavcodec/h264_refs.c | 69 +++++++++++++++++++++++-------------------------
1 file changed, 33 insertions(+), 36 deletions(-)
diff --git a/libavcodec/h264_refs.c b/libavcodec/h264_refs.c
index 2b90168..d00ceb8 100644
--- a/libavcodec/h264_refs.c
+++ b/libavcodec/h264_refs.c
@@ -212,8 +212,39 @@ static void h264_initialise_ref_list(H264Context *h, H264SliceContext *sl)
h->default_ref[i] = sl->ref_list[i][0];
}
-static void print_short_term(H264Context *h);
-static void print_long_term(H264Context *h);
+/**
+ * print short term list
+ */
+static void print_short_term(H264Context *h)
+{
+ uint32_t i;
+ if (h->avctx->debug & FF_DEBUG_MMCO) {
+ av_log(h->avctx, AV_LOG_DEBUG, "short term list:\n");
+ for (i = 0; i < h->short_ref_count; i++) {
+ H264Picture *pic = h->short_ref[i];
+ av_log(h->avctx, AV_LOG_DEBUG, "%"PRIu32" fn:%d poc:%d %p\n",
+ i, pic->frame_num, pic->poc, pic->f->data[0]);
+ }
+ }
+}
+
+/**
+ * print long term list
+ */
+static void print_long_term(H264Context *h)
+{
+ uint32_t i;
+ if (h->avctx->debug & FF_DEBUG_MMCO) {
+ av_log(h->avctx, AV_LOG_DEBUG, "long term list:\n");
+ for (i = 0; i < 16; i++) {
+ H264Picture *pic = h->long_ref[i];
+ if (pic) {
+ av_log(h->avctx, AV_LOG_DEBUG, "%"PRIu32" fn:%d poc:%d %p\n",
+ i, pic->frame_num, pic->poc, pic->f->data[0]);
+ }
+ }
+ }
+}
/**
* Extract structure information about the picture described by pic_num in
@@ -537,40 +568,6 @@ void ff_h264_remove_all_refs(H264Context *h)
}
}
-/**
- * print short term list
- */
-static void print_short_term(H264Context *h)
-{
- uint32_t i;
- if (h->avctx->debug & FF_DEBUG_MMCO) {
- av_log(h->avctx, AV_LOG_DEBUG, "short term list:\n");
- for (i = 0; i < h->short_ref_count; i++) {
- H264Picture *pic = h->short_ref[i];
- av_log(h->avctx, AV_LOG_DEBUG, "%"PRIu32" fn:%d poc:%d %p\n",
- i, pic->frame_num, pic->poc, pic->f->data[0]);
- }
- }
-}
-
-/**
- * print long term list
- */
-static void print_long_term(H264Context *h)
-{
- uint32_t i;
- if (h->avctx->debug & FF_DEBUG_MMCO) {
- av_log(h->avctx, AV_LOG_DEBUG, "long term list:\n");
- for (i = 0; i < 16; i++) {
- H264Picture *pic = h->long_ref[i];
- if (pic) {
- av_log(h->avctx, AV_LOG_DEBUG, "%"PRIu32" fn:%d poc:%d %p\n",
- i, pic->frame_num, pic->poc, pic->f->data[0]);
- }
- }
- }
-}
-
static int check_opcodes(MMCO *mmco1, MMCO *mmco2, int n_mmcos)
{
int i;
======================================================================
diff --cc libavcodec/h264_refs.c
index 2b90168,0a0cc8d..d00ceb8
--- a/libavcodec/h264_refs.c
+++ b/libavcodec/h264_refs.c
@@@ -181,39 -167,41 +181,70 @@@ static void h264_initialise_ref_list(H2
if (len < sl->ref_count[0])
memset(&sl->ref_list[0][len], 0, sizeof(H264Ref) * (sl->ref_count[0] - len));
}
+#ifdef TRACE
+ for (i = 0; i < sl->ref_count[0]; i++) {
+ ff_tlog(h->avctx, "List0: %s fn:%d 0x%p\n",
+ (sl->ref_list[0][i].parent ? (sl->ref_list[0][i].parent->long_ref ? "LT" : "ST") : "??"),
+ sl->ref_list[0][i].pic_id,
+ sl->ref_list[0][i].data[0]);
+ }
+ if (sl->slice_type_nos == AV_PICTURE_TYPE_B) {
+ for (i = 0; i < sl->ref_count[1]; i++) {
+ ff_tlog(h->avctx, "List1: %s fn:%d 0x%p\n",
+ (sl->ref_list[1][i].parent ? (sl->ref_list[1][i].parent->long_ref ? "LT" : "ST") : "??"),
+ sl->ref_list[1][i].pic_id,
+ sl->ref_list[1][i].data[0]);
+ }
+ }
+#endif
+
+ for (j = 0; j<1+(sl->slice_type_nos == AV_PICTURE_TYPE_B); j++) {
+ for (i = 0; i < sl->ref_count[j]; i++) {
+ if (sl->ref_list[j][i].parent) {
+ if (mismatches_ref(h, sl->ref_list[j][i].parent)) {
+ av_log(h->avctx, AV_LOG_ERROR, "Discarding mismatching reference\n");
+ memset(&sl->ref_list[j][i], 0, sizeof(sl->ref_list[j][i]));
+ }
+ }
+ }
+ }
+ for (i = 0; i < sl->list_count; i++)
+ h->default_ref[i] = sl->ref_list[i][0];
}
- static void print_short_term(H264Context *h);
- static void print_long_term(H264Context *h);
+ /**
+ * print short term list
+ */
+ static void print_short_term(H264Context *h)
+ {
+ uint32_t i;
+ if (h->avctx->debug & FF_DEBUG_MMCO) {
+ av_log(h->avctx, AV_LOG_DEBUG, "short term list:\n");
+ for (i = 0; i < h->short_ref_count; i++) {
+ H264Picture *pic = h->short_ref[i];
+ av_log(h->avctx, AV_LOG_DEBUG, "%"PRIu32" fn:%d poc:%d %p\n",
+ i, pic->frame_num, pic->poc, pic->f->data[0]);
+ }
+ }
+ }
+
+ /**
+ * print long term list
+ */
+ static void print_long_term(H264Context *h)
+ {
+ uint32_t i;
+ if (h->avctx->debug & FF_DEBUG_MMCO) {
+ av_log(h->avctx, AV_LOG_DEBUG, "long term list:\n");
+ for (i = 0; i < 16; i++) {
+ H264Picture *pic = h->long_ref[i];
+ if (pic) {
+ av_log(h->avctx, AV_LOG_DEBUG, "%"PRIu32" fn:%d poc:%d %p\n",
+ i, pic->frame_num, pic->poc, pic->f->data[0]);
+ }
+ }
+ }
+ }
/**
* Extract structure information about the picture described by pic_num in
@@@ -528,49 -504,8 +559,15 @@@ void ff_h264_remove_all_refs(H264Contex
h->short_ref[i] = NULL;
}
h->short_ref_count = 0;
+
+ memset(h->default_ref, 0, sizeof(h->default_ref));
+ for (i = 0; i < h->nb_slice_ctx; i++) {
+ H264SliceContext *sl = &h->slice_ctx[i];
+ sl->list_count = sl->ref_count[0] = sl->ref_count[1] = 0;
+ memset(sl->ref_list, 0, sizeof(sl->ref_list));
+ }
}
- /**
- * print short term list
- */
- static void print_short_term(H264Context *h)
- {
- uint32_t i;
- if (h->avctx->debug & FF_DEBUG_MMCO) {
- av_log(h->avctx, AV_LOG_DEBUG, "short term list:\n");
- for (i = 0; i < h->short_ref_count; i++) {
- H264Picture *pic = h->short_ref[i];
- av_log(h->avctx, AV_LOG_DEBUG, "%"PRIu32" fn:%d poc:%d %p\n",
- i, pic->frame_num, pic->poc, pic->f->data[0]);
- }
- }
- }
-
- /**
- * print long term list
- */
- static void print_long_term(H264Context *h)
- {
- uint32_t i;
- if (h->avctx->debug & FF_DEBUG_MMCO) {
- av_log(h->avctx, AV_LOG_DEBUG, "long term list:\n");
- for (i = 0; i < 16; i++) {
- H264Picture *pic = h->long_ref[i];
- if (pic) {
- av_log(h->avctx, AV_LOG_DEBUG, "%"PRIu32" fn:%d poc:%d %p\n",
- i, pic->frame_num, pic->poc, pic->f->data[0]);
- }
- }
- }
- }
-
static int check_opcodes(MMCO *mmco1, MMCO *mmco2, int n_mmcos)
{
int i;
More information about the ffmpeg-cvslog
mailing list