[FFmpeg-devel] [PATCH 1/3] lavf/avio: Add new types to AVIODirEntryType, bump minor version

Lukasz Marek lukasz.m.luki2 at gmail.com
Fri Apr 3 16:52:47 CEST 2015


On 3 April 2015 at 16:05, Lukasz Marek <lukasz.m.luki2 at gmail.com> wrote:

> On 3 April 2015 at 15:22, Nicolas George <george at nsup.org> wrote:
>
>> Le quartidi 14 germinal, an CCXXIII, Mariusz Szczepańczyk a écrit :
>> > diff --git a/libavformat/avio.h b/libavformat/avio.h
>> > index f61a8f8..51913e3 100644
>> > --- a/libavformat/avio.h
>> > +++ b/libavformat/avio.h
>> > @@ -63,7 +63,10 @@ enum AVIODirEntryType {
>> >      AVIO_ENTRY_NAMED_PIPE,
>> >      AVIO_ENTRY_SYMBOLIC_LINK,
>> >      AVIO_ENTRY_SOCKET,
>> > -    AVIO_ENTRY_FILE
>> > +    AVIO_ENTRY_FILE,
>> > +    AVIO_ENTRY_SERVER,
>> > +    AVIO_ENTRY_SHARE,
>> > +    AVIO_ENTRY_WORKGROUP,
>> >  };
>>
>> Sorry if I missed the previous discussions on the mailing list (and if
>> not,
>> maybe just 8 hours before apply was a bit short for discussion), but I
>> had a
>> bit of a concern with this change.
>>
>> Until know, if you wanted to make a recursive listing, you just had to
>> know
>> that you had to recurse into directories. Now... should you recurse into
>> shares? servers? workgroups? nobody knows.
>>
>> There should be some way of knowing whether an entry can be opened like a
>> plain file, entered like a directory, or if it is just one of the weird
>> things that lay in some corners of filesystems, without requiring an
>> update
>> when new types are added.
>>
>
> You have good point about that, but regarding a patch itself do you see it
> wrong?
> Sever, share, workgroup could be mapped to directory, but what happen when
> we have delete operation available in API. You can delete directory, but
> how to delete a server or workgroup?
> IMHO patch is OK.
>
> AVIODirEntry can be extended with a flag "can recurse" to indicate that,
> but still I believe author of the client application must be aware of what
> protocol they are using and how it works.
>

Simple example with samba:

doc/examples/avio_list_dir smb:// will list workgroups
doc/examples/avio_list_dir smb://WORKGROUP will list servers in workgroup
doc/examples/avio_list_dir smb://SERVER will list shares on server
doc/examples/avio_list_dir smb://SERVER/SHARE will list files, dirs etc in
SHARE

smb://WORKGROUP/SERVER/SHARE is invalid.

So user must know how the protocol works. Samba is a bit specific case, but
stacking directories, "openable" entries is not enough.


More information about the ffmpeg-devel mailing list