[FFmpeg-devel] [PATCH] mov reference files search improvement

Maksym Veremeyenko verem
Thu Sep 3 18:41:37 CEST 2009


Maksym Veremeyenko ???????(??):
> Hi,
> 
> Current implementation of mov reference files reading works only with 
> absolute path, but in most cases (IMHO) it should search for relative 
> reference files.
> 
> Proposed patch:
>  - extends *MOVDref* for more variables stored in [alis]
>  - extends *mov_read_dref* for reading additional variables
>  - implements two function for creating probe file list and probe them
>  - replace stream open code in *mov_read_trak*

I did more exploration of relative reference search that honor *nlvl_to* 
(next level down to target) and *nlvl_from* (next level up from alias) 
and i will post updated patch later....

For whom it may be interesting i post a reference stream search 
exploration procedure....

I build some reference movies bases on DV stream in deep tree. I 
extracted appropriate values for *nlvl_to*, *directory_name* and 
*nlvl_from*:

---------------------------------------+---------+-----------+------+
     TREE                               | nlvl_to | nlvl_from | Dir  |
---------------------------------------+---------+-----------+-------
.                                      |         |           |      |
`-- dir1                               |         |           |      |
     |-- dir2                           |         |           |      |
     |   |-- dir3                       |         |           |      |
     |   |   |-- STREAM.dv              |         |           |      |
     |   |   |-- dir4                   |         |           |      |
     |   |   |   |-- dir5               |         |           |      |
     |   |   |   |   |-- dir6           |         |           |      |
     |   |   |   |   |   `-- movie7.mov |  1      | 4         | dir3 |
     |   |   |   |   `-- movie6.mov     |  1      | 3         | dir3 |
     |   |   |   |-- dir5a              |         |           |      |
     |   |   |   |   `-- movie5a.mov    |  1      | 3         | dir3 |
     |   |   |   `-- movie5.mov         |  1      | 2         | dir3 |
     |   |   `-- movie4.mov             |  1      | 1         | dir3 |
     |   |-- dir3a                      |         |           |      |
     |   |   `-- movie3a.mov            |  2      | 2         | dir3 |
     |   `-- movie3.mov                 |  2      | 1         | dir3 |
     `-- movie2.mov                     |  3      | 1         | dir3 |
---------------------------------------+---------+-----------+------+

Lets build another table, with *nlvl_to* and *nlvl_from* and accessible 
relative name of *STREAM.dv* from appropriate mov:

+----+-----+------+--------------------+----------------------------+
|nlvl|nlvl | Dir  | case #1 bases on   |case #2 based on *file_name*|
|_to |_from| Name |  *absolute_path*   | and *directory_name*       |
+----+-----+------+--------------------+----------------------------|
| 1  | 4   | dir3 |  ../../../STREAM.dv|../../../../dir3/STREAM.dv  |
| 1  | 3   | dir3 |     ../../STREAM.dv|   ../../../dir3/STREAM.dv  |
| 1  | 3   | dir3 |     ../../STREAM.dv|   ../../../dir3/STREAM.dv  |
| 1  | 2   | dir3 |        ../STREAM.dv|      ../../dir3/STREAM.dv  |
| 1  | 1   | dir3 |           STREAM.dv|         ../dir3/STREAM.dv  |
| 2  | 2   | dir3 |   ../dir3/STREAM.dv|                            |
| 2  | 1   | dir3 |      dir3/STREAM.dv|                            |
| 3  | 1   | dir3 | dir2/dir3/STREAM.dv|                            |
+----+-----+------+--------------------+----------------------------+

So, if *absolute_path* equal to "tor/dir1/dir2/dir3/STREAM.dv" (like in 
my case for all files) then, depencies from *nlvl_to* will looks like:

*nlvl_to*              target part
----------------------------------
1                        STREAM.dv
2                   dir3/STREAM.dv
3              dir2/dir3/STREAM.dv
4         dir1/dir2/dir3/STREAM.dv

and *nlvl_from* for both cases will looks like:

*nlvl_From*  case #1          case #2
-------------------------------------
1                 []            [../]
2              [../]         [../../]
3           [../../]      [../../../]
4        [../../../]   [../../../../]

So as seen it has enough format way to implement relative path building 
code....

-- 
________________________________________
Maksym Veremeyenko



More information about the ffmpeg-devel mailing list