Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
F
ffmpeg.wasm-core
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Linshizhi
ffmpeg.wasm-core
Commits
6731f605
Commit
6731f605
authored
Oct 17, 2017
by
Rostislav Pehlivanov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
frame: add an av_frame_new_side_data_from_buf function
Signed-off-by:
Rostislav Pehlivanov
<
atomnuker@gmail.com
>
parent
1be4c857
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
36 additions
and
19 deletions
+36
-19
APIchanges
doc/APIchanges
+3
-0
frame.c
libavutil/frame.c
+15
-17
frame.h
libavutil/frame.h
+16
-0
version.h
libavutil/version.h
+2
-2
No files found.
doc/APIchanges
View file @
6731f605
...
...
@@ -15,6 +15,9 @@ libavutil: 2017-10-21
API changes, most recent first:
2018-03-xx - xxxxxxx - lavu 56.8.100 - frame.h
Add av_frame_new_side_data_from_buf().
2018-02-xx - xxxxxxx
Change av_ripemd_update(), av_murmur3_update() and av_hash_update() length
parameter type to size_t at next major bump.
...
...
libavutil/frame.c
View file @
6731f605
...
...
@@ -26,11 +26,6 @@
#include "mem.h"
#include "samplefmt.h"
static
AVFrameSideData
*
frame_new_side_data
(
AVFrame
*
frame
,
enum
AVFrameSideDataType
type
,
AVBufferRef
*
buf
);
#if FF_API_FRAME_GET_SET
MAKE_ACCESSORS
(
AVFrame
,
frame
,
int64_t
,
best_effort_timestamp
)
MAKE_ACCESSORS
(
AVFrame
,
frame
,
int64_t
,
pkt_duration
)
...
...
@@ -356,8 +351,10 @@ FF_ENABLE_DEPRECATION_WARNINGS
}
memcpy
(
sd_dst
->
data
,
sd_src
->
data
,
sd_src
->
size
);
}
else
{
sd_dst
=
frame_new_side_data
(
dst
,
sd_src
->
type
,
av_buffer_ref
(
sd_src
->
buf
));
AVBufferRef
*
ref
=
av_buffer_ref
(
sd_src
->
buf
);
sd_dst
=
av_frame_new_side_data_from_buf
(
dst
,
sd_src
->
type
,
ref
);
if
(
!
sd_dst
)
{
av_buffer_unref
(
&
ref
);
wipe_side_data
(
dst
);
return
AVERROR
(
ENOMEM
);
}
...
...
@@ -642,9 +639,9 @@ AVBufferRef *av_frame_get_plane_buffer(AVFrame *frame, int plane)
return
NULL
;
}
static
AVFrameSideData
*
frame_new_side_data
(
AVFrame
*
frame
,
enum
AVFrameSideDataType
type
,
AVBufferRef
*
buf
)
AVFrameSideData
*
av_frame_new_side_data_from_buf
(
AVFrame
*
frame
,
enum
AVFrameSideDataType
type
,
AVBufferRef
*
buf
)
{
AVFrameSideData
*
ret
,
**
tmp
;
...
...
@@ -652,17 +649,17 @@ static AVFrameSideData *frame_new_side_data(AVFrame *frame,
return
NULL
;
if
(
frame
->
nb_side_data
>
INT_MAX
/
sizeof
(
*
frame
->
side_data
)
-
1
)
goto
fail
;
return
NULL
;
tmp
=
av_realloc
(
frame
->
side_data
,
(
frame
->
nb_side_data
+
1
)
*
sizeof
(
*
frame
->
side_data
));
if
(
!
tmp
)
goto
fail
;
return
NULL
;
frame
->
side_data
=
tmp
;
ret
=
av_mallocz
(
sizeof
(
*
ret
));
if
(
!
ret
)
goto
fail
;
return
NULL
;
ret
->
buf
=
buf
;
ret
->
data
=
ret
->
buf
->
data
;
...
...
@@ -672,17 +669,18 @@ static AVFrameSideData *frame_new_side_data(AVFrame *frame,
frame
->
side_data
[
frame
->
nb_side_data
++
]
=
ret
;
return
ret
;
fail
:
av_buffer_unref
(
&
buf
);
return
NULL
;
}
AVFrameSideData
*
av_frame_new_side_data
(
AVFrame
*
frame
,
enum
AVFrameSideDataType
type
,
int
size
)
{
return
frame_new_side_data
(
frame
,
type
,
av_buffer_alloc
(
size
));
AVFrameSideData
*
ret
;
AVBufferRef
*
buf
=
av_buffer_alloc
(
size
);
ret
=
av_frame_new_side_data_from_buf
(
frame
,
type
,
buf
);
if
(
!
ret
)
av_buffer_unref
(
&
buf
);
return
ret
;
}
AVFrameSideData
*
av_frame_get_side_data
(
const
AVFrame
*
frame
,
...
...
libavutil/frame.h
View file @
6731f605
...
...
@@ -800,6 +800,22 @@ AVFrameSideData *av_frame_new_side_data(AVFrame *frame,
enum
AVFrameSideDataType
type
,
int
size
);
/**
* Add a new side data to a frame from an existing AVBufferRef
*
* @param frame a frame to which the side data should be added
* @param type the type of the added side data
* @param buf an AVBufferRef to add as side data. The ownership of
* the reference is transferred to the frame.
*
* @return newly added side data on success, NULL on error. On failure
* the frame is unchanged and the AVBufferRef remains owned by
* the caller.
*/
AVFrameSideData
*
av_frame_new_side_data_from_buf
(
AVFrame
*
frame
,
enum
AVFrameSideDataType
type
,
AVBufferRef
*
buf
);
/**
* @return a pointer to the side data of a given type on success, NULL if there
* is no side data with such type in this frame.
...
...
libavutil/version.h
View file @
6731f605
...
...
@@ -79,8 +79,8 @@
*/
#define LIBAVUTIL_VERSION_MAJOR 56
#define LIBAVUTIL_VERSION_MINOR
7
#define LIBAVUTIL_VERSION_MICRO 10
1
#define LIBAVUTIL_VERSION_MINOR
8
#define LIBAVUTIL_VERSION_MICRO 10
0
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
LIBAVUTIL_VERSION_MINOR, \
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment