Skip to content
GitLab
Explore
Projects
Groups
Topics
Snippets
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
BC
public
external
libvpx
Commits
2696ba0b
Commit
2696ba0b
authored
11 years ago
by
Dmitry Kovalev
Committed by
Gerrit Code Review
11 years ago
Browse files
Options
Download
Plain Diff
Merge "Removing duplicated example file example_xma.c."
parents
466f42aa
5bdecc65
v1.14.0-linphone
1.4.X
feature/update_to_v1.9.0-linphone
feature/uwp_nuget
frame_parallel
highbitdepth
indianrunnerduck
javanwhistlingduck
khakicampbell
linphone
linphone-android
linphone-old
longtailedduck
m49-2623
m52-2743
m54-2840
m56-2924
m66-3359
m68-3440
mandarinduck
nextgen
nextgenv2
playground
sandbox/Jingning/experimental
sandbox/Jingning/transcode
sandbox/Jingning/vpx
sandbox/aconverse@google.com/ansbench
sandbox/hkuang/frame_parallel
sandbox/hkuang@google.com/decode
sandbox/jimbankoski@google.com/proposed-aom
sandbox/jingning@google.com/decoder_test_suite
sandbox/jingning@google.com/experimental
sandbox/jzern@google.com/test
sandbox/wangch@google.com/vp9
sandbox/yaowu@google.com/mergeaom
v1.12.0-linphone
v1.6.1_linphone
v1.7.0-linphone
v1.9.0-linphone
v1.9.0
v1.9.0-rc1
v1.8.2
v1.8.1
v1.8.0
v1.7.0
v1.6.1
v1.6.0
v1.5.0
v1.4.0
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
example_xma.c
+0
-191
example_xma.c
with
0 additions
and
191 deletions
example_xma.c
deleted
100644 → 0
+
0
−
191
View file @
466f42aa
/*
* Copyright (c) 2010 The WebM project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
/* This is a simple program showing how to initialize the decoder in XMA mode */
#include
<stdio.h>
#include
<stdlib.h>
#include
<stdarg.h>
#include
<string.h>
#define VPX_CODEC_DISABLE_COMPAT 1
#include
"vpx_config.h"
#include
"vpx/vpx_decoder.h"
#include
"vpx/vpx_integer.h"
#if CONFIG_VP9_DECODER
#include
"vpx/vp8dx.h"
#endif
static
char
*
exec_name
;
static
int
verbose
=
0
;
static
const
struct
{
const
char
*
name
;
const
vpx_codec_iface_t
*
iface
;
}
ifaces
[]
=
{
#if CONFIG_VP9_DECODER
{
"vp9"
,
&
vpx_codec_vp8_dx_algo
},
#endif
};
static
void
usage_exit
(
void
)
{
int
i
;
printf
(
"Usage: %s <options>
\n\n
"
"Options:
\n
"
"
\t
--codec <name>
\t
Codec to use (default=%s)
\n
"
"
\t
-h <height>
\t
Height of the simulated video frame, in pixels
\n
"
"
\t
-w <width>
\t
Width of the simulated video frame, in pixels
\n
"
"
\t
-v
\t
Verbose mode (show individual segment sizes)
\n
"
"
\t
--help
\t
Show this message
\n
"
"
\n
"
"Included decoders:
\n
"
"
\n
"
,
exec_name
,
ifaces
[
0
].
name
);
for
(
i
=
0
;
i
<
sizeof
(
ifaces
)
/
sizeof
(
ifaces
[
0
]);
i
++
)
printf
(
" %-6s - %s
\n
"
,
ifaces
[
i
].
name
,
vpx_codec_iface_name
(
ifaces
[
i
].
iface
));
exit
(
EXIT_FAILURE
);
}
static
void
usage_error
(
const
char
*
fmt
,
...)
{
va_list
ap
;
va_start
(
ap
,
fmt
);
vprintf
(
fmt
,
ap
);
printf
(
"
\n
"
);
usage_exit
();
}
void
my_mem_dtor
(
vpx_codec_mmap_t
*
mmap
)
{
if
(
verbose
)
printf
(
"freeing segment %d
\n
"
,
mmap
->
id
);
free
(
mmap
->
priv
);
}
int
main
(
int
argc
,
char
**
argv
)
{
vpx_codec_ctx_t
decoder
;
vpx_codec_iface_t
*
iface
=
ifaces
[
0
].
iface
;
vpx_codec_iter_t
iter
;
vpx_codec_dec_cfg_t
cfg
;
vpx_codec_err_t
res
=
VPX_CODEC_OK
;
unsigned
int
alloc_sz
=
0
;
unsigned
int
w
=
352
;
unsigned
int
h
=
288
;
int
i
;
exec_name
=
argv
[
0
];
for
(
i
=
1
;
i
<
argc
;
i
++
)
{
if
(
!
strcmp
(
argv
[
i
],
"--codec"
))
{
if
(
i
+
1
<
argc
)
{
int
j
,
k
=
-
1
;
i
++
;
for
(
j
=
0
;
j
<
sizeof
(
ifaces
)
/
sizeof
(
ifaces
[
0
]);
j
++
)
if
(
!
strcmp
(
ifaces
[
j
].
name
,
argv
[
i
]))
k
=
j
;
if
(
k
>=
0
)
iface
=
ifaces
[
k
].
iface
;
else
usage_error
(
"Error: Unrecognized argument (%s) to --codec
\n
"
,
argv
[
i
]);
}
else
usage_error
(
"Error: Option --codec requires argument.
\n
"
);
}
else
if
(
!
strcmp
(
argv
[
i
],
"-v"
))
verbose
=
1
;
else
if
(
!
strcmp
(
argv
[
i
],
"-h"
))
if
(
i
+
1
<
argc
)
{
h
=
atoi
(
argv
[
++
i
]);
}
else
usage_error
(
"Error: Option -h requires argument.
\n
"
);
else
if
(
!
strcmp
(
argv
[
i
],
"-w"
))
if
(
i
+
1
<
argc
)
{
w
=
atoi
(
argv
[
++
i
]);
}
else
usage_error
(
"Error: Option -w requires argument.
\n
"
);
else
if
(
!
strcmp
(
argv
[
i
],
"--help"
))
usage_exit
();
else
usage_error
(
"Error: Unrecognized option %s
\n\n
"
,
argv
[
i
]);
}
if
(
argc
==
1
)
printf
(
"Using built-in defaults. For options, rerun with --help
\n\n
"
);
/* XMA mode is not supported on all decoders! */
if
(
!
(
vpx_codec_get_caps
(
iface
)
&
VPX_CODEC_CAP_XMA
))
{
printf
(
"%s does not support XMA mode!
\n
"
,
vpx_codec_iface_name
(
iface
));
return
EXIT_FAILURE
;
}
/* The codec knows how much memory to allocate based on the size of the
* encoded frames. This data can be parsed from the bitstream with
* vpx_codec_peek_stream_info() if a bitstream is available. Otherwise,
* a fixed size can be used that will be the upper limit on the frame
* size the decoder can decode.
*/
cfg
.
w
=
w
;
cfg
.
h
=
h
;
/* Initialize the decoder in XMA mode. */
if
(
vpx_codec_dec_init
(
&
decoder
,
iface
,
&
cfg
,
VPX_CODEC_USE_XMA
))
{
printf
(
"Failed to initialize decoder in XMA mode: %s
\n
"
,
vpx_codec_error
(
&
decoder
));
return
EXIT_FAILURE
;
}
/* Iterate through the list of memory maps, allocating them with the
* requested alignment.
*/
iter
=
NULL
;
do
{
vpx_codec_mmap_t
mmap
;
unsigned
int
align
;
res
=
vpx_codec_get_mem_map
(
&
decoder
,
&
mmap
,
&
iter
);
align
=
mmap
.
align
?
mmap
.
align
-
1
:
0
;
if
(
!
res
)
{
if
(
verbose
)
printf
(
"Allocating segment %u, size %lu, align %u %s
\n
"
,
mmap
.
id
,
mmap
.
sz
,
mmap
.
align
,
mmap
.
flags
&
VPX_CODEC_MEM_ZERO
?
"(ZEROED)"
:
""
);
if
(
mmap
.
flags
&
VPX_CODEC_MEM_ZERO
)
mmap
.
priv
=
calloc
(
1
,
mmap
.
sz
+
align
);
else
mmap
.
priv
=
malloc
(
mmap
.
sz
+
align
);
mmap
.
base
=
(
void
*
)((((
uintptr_t
)
mmap
.
priv
)
+
align
)
&
~
(
uintptr_t
)
align
);
mmap
.
dtor
=
my_mem_dtor
;
alloc_sz
+=
mmap
.
sz
+
align
;
if
(
vpx_codec_set_mem_map
(
&
decoder
,
&
mmap
,
1
))
{
printf
(
"Failed to set mmap: %s
\n
"
,
vpx_codec_error
(
&
decoder
));
return
EXIT_FAILURE
;
}
}
else
if
(
res
!=
VPX_CODEC_LIST_END
)
{
printf
(
"Failed to get mmap: %s
\n
"
,
vpx_codec_error
(
&
decoder
));
return
EXIT_FAILURE
;
}
}
while
(
res
!=
VPX_CODEC_LIST_END
);
printf
(
"%s
\n
%d bytes external memory required for %dx%d.
\n
"
,
decoder
.
name
,
alloc_sz
,
cfg
.
w
,
cfg
.
h
);
vpx_codec_destroy
(
&
decoder
);
return
EXIT_SUCCESS
;
}
This diff is collapsed.
Click to expand it.
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Topics
Snippets