[FFmpeg-devel] [PATCH] Add Apple HTTP Live Streaming protocol handler

Martin Storsjö martin
Wed Aug 18 16:37:53 CEST 2010


On Tue, 17 Aug 2010, Michael Niedermayer wrote:

> On Tue, Aug 17, 2010 at 04:15:20PM +0300, Martin Storsj? wrote:
> > On Thu, 5 Aug 2010, Ronald S. Bultje wrote:
> > 
> > > On Thu, Aug 5, 2010 at 4:09 PM, Martin Storsj? <martin at martin.st> wrote:
> > > > On Wed, 4 Aug 2010, Ronald S. Bultje wrote:
> > > >> On Tue, Jul 27, 2010 at 5:45 AM, Martin Storsj? <martin at martin.st> wrote:
> > > >> [..]
> > > >> > -static void handle_basic_params(HTTPAuthState *state, const char *key,
> > > >> > +static void handle_basic_params(void *context, const char *key,
> > > >> > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?int key_len, char **dest, int *dest_len)
> > > >> > ?{
> > > >> > + ? ?HTTPAuthState *state = context;
> > > >> > ? ? ?if (!strncmp(key, "realm=", key_len)) {
> > > >> > ? ? ? ? ?*dest ? ? = ? ? ? ?state->realm;
> > > >> > ? ? ? ? ?*dest_len = sizeof(state->realm);
> > > >> > ? ? ?}
> > > >> > ?}
> > > >> >
> > > >> > -static void handle_digest_params(HTTPAuthState *state, const char *key,
> > > >> > +static void handle_digest_params(void *context, const char *key,
> > > >> > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int key_len, char **dest, int *dest_len)
> > > >> > ?{
> > > >> > + ? ?HTTPAuthState *state = context;
> > > >> > ? ? ?DigestParams *digest = &state->digest_params;
> > > >> >
> > > >> > ? ? ?if (!strncmp(key, "realm=", key_len)) {
> > > >> > @@ -116,9 +62,10 @@ static void handle_digest_params(HTTPAuthState *state, const char *key,
> > > >> > ? ? ?}
> > > >> > ?}
> > > >> >
> > > >> > -static void handle_digest_update(HTTPAuthState *state, const char *key,
> > > >> > +static void handle_digest_update(void *context, const char *key,
> > > >> > ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int key_len, char **dest, int *dest_len)
> > > >> > ?{
> > > >> > + ? ?HTTPAuthState *state = context;
> > > >> > ? ? ?DigestParams *digest = &state->digest_params;
> > > >> >
> > > >> > ? ? ?if (!strncmp(key, "nextnonce=", key_len)) {
> > > >>
> > > >> These extra lines should be avoidable by casting the function to a
> > > >> proper type (a typedef helps here) when passing it to the function.
> > > >> Other than that, this patch is OK, feel free to apply once #2 is OK'ed
> > > >> also (since without it, this isn't needed).
> > > >
> > > > I tried doing this, but I'm not sure I agree it's prettier. The attached
> > > > patch is the diff compared to the previous version. What do you think?
> > > 
> > > I personally like it a lot better, but that's just me. If others
> > > disagree violently, then let's not...
> > 
> > Does anyone else have an opinion on this? That is, of these two variants, 
> > which one do you prefer:
> > 
> > static void handle_basic_params(void *context, const char *key,
> >                                 int key_len, char **dest, int *dest_len)
> > {
> >     HTTPAuthState *state = context;
> >     if (!strncmp(key, "realm=", key_len)) {
> >         *dest     =        state->realm;
> >         *dest_len = sizeof(state->realm);
> >     }
> > }
> > 
> > ff_parse_key_value(p, handle_basic_params, state);
> > 
> > Or:
> > 
> > static void handle_basic_params(HTTPAuthState *state, const char *key,
> >                                 int key_len, char **dest, int *dest_len)
> > {
> >     if (!strncmp(key, "realm=", key_len)) {
> >         *dest     =        state->realm;
> >         *dest_len = sizeof(state->realm);
> >     }
> > }
> > 
> > ff_parse_key_value(p, (ff_parse_key_val_cb) handle_basic_params, state);
> > 
> > 
> > That is, keeping the context pointer as an opaque void pointer that is 
> > cast within the callback function, or casting the whole function pointer 
> > using a typedef?
> 
> iam definitly prefering the handle_basic_params(HTTPAuthState *state

Ok, thanks for voicing your opinion, that form it is then.

// Martin



More information about the ffmpeg-devel mailing list