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

Mariusz Szczepańczyk mszczepanczyk at gmail.com
Fri Apr 3 18:02:05 CEST 2015


On Fri, Apr 3, 2015 at 4:52 PM, Lukasz Marek <lukasz.m.luki2 at gmail.com>
wrote:

> 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.
>

I think there should be a separate function to construct a new url from a
url
and an entry object, that covers these cases or calls
av_append_path_component() for regular entries.


More information about the ffmpeg-devel mailing list