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
97f86680
Commit
97f86680
authored
Jul 19, 2012
by
Nicolas George
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavfi: make copy_buffer_ref common.
parent
b0629366
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
43 additions
and
39 deletions
+43
-39
buffer.c
libavfilter/buffer.c
+39
-0
buffersrc.c
libavfilter/buffersrc.c
+1
-39
internal.h
libavfilter/internal.h
+3
-0
No files found.
libavfilter/buffer.c
View file @
97f86680
...
...
@@ -22,10 +22,12 @@
#include "libavutil/audioconvert.h"
#include "libavutil/avassert.h"
#include "libavutil/imgutils.h"
#include "libavcodec/avcodec.h"
#include "avfilter.h"
#include "internal.h"
#include "audio.h"
#include "avcodec.h"
void
ff_avfilter_default_free_buffer
(
AVFilterBuffer
*
ptr
)
...
...
@@ -175,3 +177,40 @@ void avfilter_copy_buffer_ref_props(AVFilterBufferRef *dst, AVFilterBufferRef *s
default:
break
;
}
}
AVFilterBufferRef
*
ff_copy_buffer_ref
(
AVFilterLink
*
outlink
,
AVFilterBufferRef
*
ref
)
{
AVFilterBufferRef
*
buf
;
int
channels
;
switch
(
outlink
->
type
)
{
case
AVMEDIA_TYPE_VIDEO
:
buf
=
ff_get_video_buffer
(
outlink
,
AV_PERM_WRITE
,
ref
->
video
->
w
,
ref
->
video
->
h
);
if
(
!
buf
)
return
NULL
;
av_image_copy
(
buf
->
data
,
buf
->
linesize
,
(
void
*
)
ref
->
data
,
ref
->
linesize
,
ref
->
format
,
ref
->
video
->
w
,
ref
->
video
->
h
);
break
;
case
AVMEDIA_TYPE_AUDIO
:
buf
=
ff_get_audio_buffer
(
outlink
,
AV_PERM_WRITE
,
ref
->
audio
->
nb_samples
);
if
(
!
buf
)
return
NULL
;
channels
=
av_get_channel_layout_nb_channels
(
ref
->
audio
->
channel_layout
);
av_samples_copy
(
buf
->
extended_data
,
ref
->
buf
->
extended_data
,
0
,
0
,
ref
->
audio
->
nb_samples
,
channels
,
ref
->
format
);
break
;
default:
return
NULL
;
}
avfilter_copy_buffer_ref_props
(
buf
,
ref
);
return
buf
;
}
libavfilter/buffersrc.c
View file @
97f86680
...
...
@@ -74,44 +74,6 @@ typedef struct {
return AVERROR(EINVAL);\
}
static
AVFilterBufferRef
*
copy_buffer_ref
(
AVFilterContext
*
ctx
,
AVFilterBufferRef
*
ref
)
{
AVFilterLink
*
outlink
=
ctx
->
outputs
[
0
];
AVFilterBufferRef
*
buf
;
int
channels
;
switch
(
outlink
->
type
)
{
case
AVMEDIA_TYPE_VIDEO
:
buf
=
ff_get_video_buffer
(
outlink
,
AV_PERM_WRITE
,
ref
->
video
->
w
,
ref
->
video
->
h
);
if
(
!
buf
)
return
NULL
;
av_image_copy
(
buf
->
data
,
buf
->
linesize
,
(
void
*
)
ref
->
data
,
ref
->
linesize
,
ref
->
format
,
ref
->
video
->
w
,
ref
->
video
->
h
);
break
;
case
AVMEDIA_TYPE_AUDIO
:
buf
=
ff_get_audio_buffer
(
outlink
,
AV_PERM_WRITE
,
ref
->
audio
->
nb_samples
);
if
(
!
buf
)
return
NULL
;
channels
=
av_get_channel_layout_nb_channels
(
ref
->
audio
->
channel_layout
);
av_samples_copy
(
buf
->
extended_data
,
ref
->
buf
->
extended_data
,
0
,
0
,
ref
->
audio
->
nb_samples
,
channels
,
ref
->
format
);
break
;
default:
return
NULL
;
}
avfilter_copy_buffer_ref_props
(
buf
,
ref
);
return
buf
;
}
int
av_buffersrc_add_frame
(
AVFilterContext
*
buffer_src
,
const
AVFrame
*
frame
,
int
flags
)
{
...
...
@@ -175,7 +137,7 @@ int av_buffersrc_add_ref(AVFilterContext *s, AVFilterBufferRef *buf, int flags)
}
}
if
(
!
(
flags
&
AV_BUFFERSRC_FLAG_NO_COPY
))
to_free
=
buf
=
copy_buffer_ref
(
s
,
buf
);
to_free
=
buf
=
ff_copy_buffer_ref
(
s
->
outputs
[
0
]
,
buf
);
if
(
!
buf
)
return
-
1
;
...
...
libavfilter/internal.h
View file @
97f86680
...
...
@@ -347,4 +347,7 @@ int ff_request_frame(AVFilterLink *link);
.category = AV_CLASS_CATEGORY_FILTER, \
}
AVFilterBufferRef
*
ff_copy_buffer_ref
(
AVFilterLink
*
outlink
,
AVFilterBufferRef
*
ref
);
#endif
/* AVFILTER_INTERNAL_H */
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