zoukankan      html  css  js  c++  java
  • 5_2 实现过程中

    1.别人的mbcmp函数讲解

    http://wangluohongren.wangluoliuxing.com/hongren-708672ad01010p4n.htm

    2.hardamard变换

    http://zh.wikipedia.org/wiki/%E9%98%BF%E8%BE%BE%E9%A9%AC%E5%8F%98%E6%8D%A2

    文档

    http://bbs.chinavideo.org/viewthread.php?tid=10602

    一个老版本注释

    4.scan8  ffmpeg 代码

    http://bbs.chinavideo.org/viewthread.php?tid=2310

     

    x264_macroblock_thread_init 初始化函数的位置

    搜寻h->mb.pic.p_fenc过程

    #define FENC_STRIDE 16

    #define FDEC_STRIDE 32

                ALIGNED_16( pixel fenc_buf[48*FENC_STRIDE] );

                ALIGNED_16( pixel fdec_buf[52*FDEC_STRIDE] );

     h->mb.pic.p_fenc[0] = h->mb.pic.fenc_buf;

        h->mb.pic.p_fdec[0] = h->mb.pic.fdec_buf + 2*FDEC_STRIDE;

        h->mb.pic.p_fenc[1] = h->mb.pic.fenc_buf + 16*FENC_STRIDE;

    h->mb.pic.p_fdec[1] = h->mb.pic.fdec_buf + 19*FDEC_STRIDE;

    再结合h->mb.pic.fdec_buf和 h->mb.pic.p_fenc_buf的定义

     

     

     

    x264_macroblock_thread_init

     

     

    1.Slice_write中将宏块分割

    While1) 循环中开始处理每个宏块

    最开始通过mb_xy来控制编码的宏块个数

    然后进阶这通过 x264_macroblock_cache_load_interlace()或者x264_macroblock_cache_load_progressive( h, i_mb_x, i_mb_y );  来载入宏块标示

    跟中进入x264_macroblock_cache_load_progressive( h, i_mb_x, i_mb_y );   由于没有使用interlaced  可以看到调用了x264_macroblock_cache_load( h, mb_x, mb_y, 0 ); 这个函数,宏块最开始的指针初始化等行为都是在这个函数里面进行操作的。

    2.x264_macroblock_cache_load( h, mb_x, mb_y, 0 ); 首先调用了x264_macroblock_cache_load_neighbours( h, mb_x, mb_y, b_mbaff );就是分析当前宏块周围的情况,邻居h->mb.xy等赋值操作。这些进行完了之后才在后面进行真正指针的一些赋值操作。

  • 相关阅读:
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    个人博客
    5.14
    5.13
    5.12
  • 原文地址:https://www.cnblogs.com/hatreds/p/2479369.html
Copyright © 2011-2022 走看看