FFmpeg
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
•
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
libavformat
metadata.c
Go to the documentation of this file.
1
/*
2
* copyright (c) 2009 Michael Niedermayer
3
*
4
* This file is part of FFmpeg.
5
*
6
* FFmpeg is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public
8
* License as published by the Free Software Foundation; either
9
* version 2.1 of the License, or (at your option) any later version.
10
*
11
* FFmpeg is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with FFmpeg; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
#include "
avformat.h
"
22
#include "
metadata.h
"
23
#include "
libavutil/dict.h
"
24
#include "
libavutil/avstring.h
"
25
26
void
ff_metadata_conv
(
AVDictionary
**pm,
const
AVMetadataConv
*d_conv,
27
const
AVMetadataConv
*s_conv)
28
{
29
/* TODO: use binary search to look up the two conversion tables
30
if the tables are getting big enough that it would matter speed wise */
31
const
AVMetadataConv
*sc, *
dc
;
32
AVDictionaryEntry
*mtag =
NULL
;
33
AVDictionary
*
dst
=
NULL
;
34
const
char
*key;
35
36
if
(d_conv == s_conv)
37
return
;
38
39
while
((mtag =
av_dict_get
(*pm,
""
, mtag,
AV_DICT_IGNORE_SUFFIX
))) {
40
key = mtag->
key
;
41
if
(s_conv)
42
for
(sc=s_conv; sc->
native
; sc++)
43
if
(!
av_strcasecmp
(key, sc->
native
)) {
44
key = sc->
generic
;
45
break
;
46
}
47
if
(d_conv)
48
for
(dc=d_conv; dc->
native
; dc++)
49
if
(!
av_strcasecmp
(key, dc->
generic
)) {
50
key = dc->
native
;
51
break
;
52
}
53
av_dict_set
(&dst, key, mtag->
value
, 0);
54
}
55
av_dict_free
(pm);
56
*pm =
dst
;
57
}
58
59
void
ff_metadata_conv_ctx
(
AVFormatContext
*ctx,
const
AVMetadataConv
*d_conv,
60
const
AVMetadataConv
*s_conv)
61
{
62
int
i;
63
ff_metadata_conv
(&ctx->
metadata
, d_conv, s_conv);
64
for
(i=0; i<ctx->
nb_streams
; i++)
65
ff_metadata_conv
(&ctx->
streams
[i]->
metadata
, d_conv, s_conv);
66
for
(i=0; i<ctx->
nb_chapters
; i++)
67
ff_metadata_conv
(&ctx->
chapters
[i]->
metadata
, d_conv, s_conv);
68
for
(i=0; i<ctx->
nb_programs
; i++)
69
ff_metadata_conv
(&ctx->
programs
[i]->
metadata
, d_conv, s_conv);
70
}
Generated on Sat May 25 2013 04:00:59 for FFmpeg by
1.8.2