[FFmpeg-devel] [WIP] H.264 MVC decoder

Michael Niedermayer michaelni at gmx.at
Wed Feb 5 17:13:12 CET 2014


On Wed, Feb 05, 2014 at 04:24:11PM +0100, Gerion Entrup wrote:
> Hello,
> 
> I see you have MVC as a GSoC-project. There is an existing implementation, I 
> found it recently as a master thesis [1]. The original code you can find at 
> github [2].
> 
> I've cleaned it up (remove temporary files, reformat, ...), see the attached 
> patch.
> The patch applies against commit 69cc119d (0.11.x release branch, I think), 
> just like the original code. The code compiles, I have not tested it. If you 
> like the code, I would try to merge it into master (but not until next month, 
> feel free to do it earlier ;)). Please comment. I do not have the skills 
> (yet?) to review the code quality-wise.
> 
> The original author is CCed.
> 
> Regards,
> Gerion
> 
> [1] http://www.nt.uni-saarland.de/fileadmin/file_uploads/theses/master/Optimized_implementation_of_a_MVC_decoder.pdf
> [2] https://github.com/Britz/FFmpeg

>  configure_debug              |    2 
>  core                         |binary
[...]
>  libavcodec/stG88jwK          |binary
>  libavcodec/stX9CSHi          |binary

these dont belong in the patch


[...]
> --- /dev/null
> +++ b/decode_view.sh
> @@ -0,0 +1,6 @@
> +#!/bin/sh
> +for var in $@
> +do
> +	echo "decode view: $var"
> +	./ffmpeg -target_view_index $var -y -i ../../Dropbox/Masterarbeit/sequences/ballroom.h264 ../../Test/ballroom_$var.yuv > ../../Test/log_$var.txt 2>&1
> +done

Dropbox/Masterarbeit ?



> diff --git a/ffplay.c b/ffplay.c
> index 779c879..4779193 100644
> --- a/ffplay.c
> +++ b/ffplay.c
> @@ -1290,15 +1290,15 @@ display:
>              av_diff = 0;
>              if (is->audio_st && is->video_st)
>                  av_diff = get_audio_clock(is) - get_video_clock(is);
> -            printf("%7.2f A-V:%7.3f fd=%4d aq=%5dKB vq=%5dKB sq=%5dB f=%"PRId64"/%"PRId64"   \r",
> -                   get_master_clock(is),
> -                   av_diff,
> -                   is->frame_drops_early + is->frame_drops_late,
> -                   aqsize / 1024,
> -                   vqsize / 1024,
> -                   sqsize,
> -                   is->video_st ? is->video_st->codec->pts_correction_num_faulty_dts : 0,
> -                   is->video_st ? is->video_st->codec->pts_correction_num_faulty_pts : 0);
> +//            printf("%7.2f A-V:%7.3f fd=%4d aq=%5dKB vq=%5dKB sq=%5dB f=%"PRId64"/%"PRId64"   \r",
> +//                   get_master_clock(is),
> +//                   av_diff,
> +//                   is->frame_drops_early + is->frame_drops_late,
> +//                   aqsize / 1024,
> +//                   vqsize / 1024,
> +//                   sqsize,
> +//                   is->video_st ? is->video_st->codec->pts_correction_num_faulty_dts : 0,
> +//                   is->video_st ? is->video_st->codec->pts_correction_num_faulty_pts : 0);
>              fflush(stdout);
>              last_time = cur_time;
>          }

unrelated


[...]

> --- a/libavcodec/h264.c
> +++ b/libavcodec/h264.c
> @@ -38,6 +38,7 @@
>  #include "h264.h"
>  #include "h264data.h"
>  #include "h264_mvpred.h"
> +#include "h264_mvc.h"
>  #include "golomb.h"
>  #include "mathops.h"
>  #include "rectangle.h"

> @@ -47,6 +48,7 @@
>  
>  // #undef NDEBUG
>  #include <assert.h>
> +#include <time.h>
>  

theres probably no reason to use time based functions from h264


>  const uint16_t ff_h264_mb_sizes[4] = { 256, 384, 512, 768 };
>  
> @@ -178,6 +180,27 @@ const uint8_t *ff_h264_decode_nal(H264Context *h, const uint8_t *src,
>      src++;
>      length--;
>  
> +    // EDIT for MVC support
> +    // JB ff_h264_decode_nal
> +    // @author: Jochen Britz

authorship should be kept track of by git not by placing comments in
the code

I didnt review the rest, but first the patch must be tested and made
sure it works and regression tests added.
then it has to be cleaned up and updated so it applies to
ffmpeg master.

This is probably some work

Also ive been told that someone from the libav fork is
working on this, so if possible duplication of work should be avoided
and existing work in progress (mutually) reused

[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Observe your enemies, for they first find out your faults. -- Antisthenes
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20140205/29a39169/attachment.asc>


More information about the ffmpeg-devel mailing list