annotate av_opts.c @ 28992:947ef23ba798

Test if create_vdp_decoder() might succeed by calling it from config() with a small value for max_reference_frames. This does not make automatic recovery by using software decoder possible, but lets MPlayer fail more graciously on - actually existing - buggy hardware that does not support certain H264 widths when using hardware accelerated decoding (784, 864, 944, 1024, 1808, 1888 pixels on NVIDIA G98) and if the user tries to hardware-decode more samples at the same time than supported. Might break playback of H264 Intra-Only samples on hardware with very little video memory.
author cehoyos
date Sat, 21 Mar 2009 20:11:05 +0000
parents e37323667348
children 321e9ea69b9f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
26704
41f8ba327cf5 Add license headers to av_opts
reimar
parents: 26699
diff changeset
1 /*
41f8ba327cf5 Add license headers to av_opts
reimar
parents: 26699
diff changeset
2 * AVOption parsing helper
41f8ba327cf5 Add license headers to av_opts
reimar
parents: 26699
diff changeset
3 * Copyright (C) 2008 Michael Niedermayer
41f8ba327cf5 Add license headers to av_opts
reimar
parents: 26699
diff changeset
4 *
41f8ba327cf5 Add license headers to av_opts
reimar
parents: 26699
diff changeset
5 * This file is part of MPlayer.
41f8ba327cf5 Add license headers to av_opts
reimar
parents: 26699
diff changeset
6 *
41f8ba327cf5 Add license headers to av_opts
reimar
parents: 26699
diff changeset
7 * MPlayer is free software; you can redistribute it and/or modify
41f8ba327cf5 Add license headers to av_opts
reimar
parents: 26699
diff changeset
8 * it under the terms of the GNU General Public License as published by
41f8ba327cf5 Add license headers to av_opts
reimar
parents: 26699
diff changeset
9 * the Free Software Foundation; either version 2 of the License, or
41f8ba327cf5 Add license headers to av_opts
reimar
parents: 26699
diff changeset
10 * (at your option) any later version.
41f8ba327cf5 Add license headers to av_opts
reimar
parents: 26699
diff changeset
11 *
41f8ba327cf5 Add license headers to av_opts
reimar
parents: 26699
diff changeset
12 * MPlayer is distributed in the hope that it will be useful,
41f8ba327cf5 Add license headers to av_opts
reimar
parents: 26699
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
41f8ba327cf5 Add license headers to av_opts
reimar
parents: 26699
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
41f8ba327cf5 Add license headers to av_opts
reimar
parents: 26699
diff changeset
15 * GNU General Public License for more details.
41f8ba327cf5 Add license headers to av_opts
reimar
parents: 26699
diff changeset
16 *
26706
e37323667348 Use standard license header.
diego
parents: 26704
diff changeset
17 * You should have received a copy of the GNU General Public License along
e37323667348 Use standard license header.
diego
parents: 26704
diff changeset
18 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
e37323667348 Use standard license header.
diego
parents: 26704
diff changeset
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
26704
41f8ba327cf5 Add license headers to av_opts
reimar
parents: 26699
diff changeset
20 */
41f8ba327cf5 Add license headers to av_opts
reimar
parents: 26699
diff changeset
21
26691
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
22 #include <stdlib.h>
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
23 #include <string.h>
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
24 #include "libavcodec/opt.h"
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
25
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
26 int parse_avopts(void *v, char *str){
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
27 char *start;
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
28 start= str= strdup(str);
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
29
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
30 while(str && *str){
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
31 char *next_opt, *arg;
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
32
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
33 next_opt= strchr(str, ',');
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
34 if(next_opt) *next_opt++= 0;
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
35
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
36 arg = strchr(str, '=');
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
37 if(arg) *arg++= 0;
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
38
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
39 if(!av_set_string(v, str, arg)){
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
40 free(start);
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
41 return -1;
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
42 }
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
43 str= next_opt;
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
44 }
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
45
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
46 free(start);
e456af9908f8 AVOptions support.
michael
parents:
diff changeset
47 return 0;
26699
f64717dfd9d5 Add newlines at end of file, this is required for text files and gcc
reimar
parents: 26691
diff changeset
48 }