[Ffmpeg-devel] DV decoder questions

Burkhard Plaum plaum
Mon Dec 12 14:18:43 CET 2005


Hi all,

2 things I stumbled across:

- In dv.c, there is a 

  static uint8_t** dv_anchor;

  which handles multithreaded decoding. Now if one wants to
  decode 2 dv streams in 2 threads, this will most likely
  crash as long as the dv_anchor is a global variable. 
  Would you apply a patch, which moves the dv_anchor to the 
  DVVideoContext?

- I found, that the DV decoder doesn't set the sample aspect
  ratio (it's 1:1 after the first decode call). To set the proper
  ratio, one must know, if the DV is 16:9 or 4:3. I found no place
  in ffmpeg, where this is detected (it should play no role for the
  actual decoding). In libdv, there is a function:

  int
  dv_format_wide (dv_decoder_t *dv)
  {
    uint8_t  id;

    if ((id = dv -> vaux_pack [0x61]) != 0xff) {
      if (dv->std == e_dv_std_smpte_314m)
        return ((dv->vaux_data[id][1] & 0x7) == 0x2);
      else
        return (((dv->vaux_data[id][1] & 0x7) == 0x2) || 
                ((dv->vaux_data[id][1] & 0x7) == 0x7)) ;
    }
    return -1;
  }

  I didn't dig deep enough to find out what the vaux_pack and vaux_data
  are. Does anyone have an idea, how this could be merged into the 
  ffmpeg dv decoder?

Cheers

Burkhard





More information about the ffmpeg-devel mailing list