Opcoes Binarias De Obj




Opções Binárias De ObjImplementando AVOptions retornar anterior. NULO. A criacao de childnext () e childclassnext () como definido acima em testclass agora tornara childstructs opcoes acessiveis atraves de teststruct (novamente, a instalacao adequada como descrito acima precisa ser feito em childstruct logo apos ele e criado). Do exemplo acima pode nao estar claro por que tanto childnext () quanto childclassnext () sao necessarios. A distincao e que childnext () itera sobre objetos realmente existentes, enquanto childclassnext () itera sobre todas as possiveis classes filho. Por exemplo. Se um AVCodecContext foi inicializado para usar um codec que tenha opcoes privadas, entao seu childnext () retornara AVCodecContext. privdata e terminara iterating. O OTOH childclassnext () no AVCodecContext. avclass itera sobre todos os codecs disponiveis com opcoes privadas. Constantes nomeadas E possivel criar constantes nomeadas para opcoes. Basta definir o campo de unidade da opcao as constantes devem aplicar a uma sequencia de caracteres e criar as proprias constantes como opcoes de tipo AVOPTTYPECONST com seu campo de unidade definido para a mesma sequencia de caracteres. Seu campo defaultval deve conter o valor da constante nomeada. Por exemplo, para adicionar algumas constantes nomeadas para a opcao testflags acima, coloque o seguinte na matriz childopts: offsetof (childstruct, flagsopt), AVOPTTYPEFLAGS. , INTMIN, INTMAX, quottestunitquot, Using AVOptions Esta secao trata de acessar opcoes em uma estrutura habilitada para AVOptions. Tais estruturas em FFmpeg sao e. AVCodecContext em libavcodec ou AVFormatContext em libavformat. Examinando AVOptions As funcoes basicas para examinar as opcoes sao avoptnext (). Que itera sobre todas as opcoes definidas para um objeto, e avoptfind (). Que procura uma opcao com o nome fornecido. A situacao e mais complicada com o assentamento. Uma estrutura habilitada para AVOptions pode ter filhos habilitados para AVOptions. Passar a bandeira AVOPTSEARCHCHILDREN para avoptfind () fara com que a funcao procure as criancas recursivamente. Para enumerar ha basicamente dois casos. O primeiro e quando voce deseja obter todas as opcoes que possam existir potencialmente na estrutura e seus filhos (por exemplo, ao construir a documentacao). Nesse caso, voce deve chamar avoptchildclassnext () recursivamente sobre o pai estruturas AVClass. O segundo caso e quando voce tem uma estrutura ja inicializada com todos os seus filhos e voce deseja obter todas as opcoes que podem ser realmente escritas ou ler a partir dele. Nesse caso, voce deve chamar avoptchildnext () recursivamente (e avoptnext () em cada resultado). Leitura e escrita AVOptions Ao definir opcoes, voce geralmente tem uma sequencia de caracteres lida diretamente do usuario. Em tal caso, basta passar para avoptset () e suficiente. Para opcoes de tipo nao-string, avoptset () analisara a string de acordo com o tipo de opcao. Da mesma forma avoptget () ira ler qualquer tipo de opcao e converte-lo para uma sequencia de caracteres que sera retornado. Nao esqueca que a string e alocada, entao voce tem que libera-lo com avfree (). Em alguns casos, pode ser mais conveniente para colocar todas as opcoes em um AVDictionary e chamar avoptsetdict () sobre ele. Um caso especifico disso e o formato / codec aberto funcoes em lavf / lavc que levam um dicionario preenchido com a opcao como um parametro. Isto permite definir algumas opcoes que nao podem ser definidas de outro modo, p. Ex. O formato de arquivo de entrada nao e conhecido antes que o arquivo seja realmente aberto. Documentacao de definicao de macro O valor a ser definido. Se o campo nao e de um tipo string, entao a string dada e analisada. Correccoes SI e alguns escalares nomeados sao suportados. Se o campo e de um tipo numerico, ele tem que ser um escalar numerico ou nomeado. Comportamento com mais de um escalar e - infix operadores e indefinido. Se o campo e de um tipo de sinalizadores, ele tem que ser uma sequencia de escalares numericos ou de sinalizadores nomeados separados por ou -. Prefixing um sinalizador com faz com que ele seja definido sem afetar as outras sinalizacoes de forma semelhante, - desabilita um sinalizador. Se non-NULL colocar aqui um ponteiro para a AVOption encontrado