Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
ffmpeg
Project
Project
Details
Activity
Releases
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
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Stefan Westerfeld
ffmpeg
Commits
82faeb56
Commit
82faeb56
authored
Jan 29, 2021
by
James Almer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
avformat/amvenc: use av_packet_alloc() to allocate packets
Signed-off-by:
James Almer
<
jamrial@gmail.com
>
parent
01f4d33b
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
25 additions
and
16 deletions
+25
-16
amvenc.c
libavformat/amvenc.c
+25
-16
No files found.
libavformat/amvenc.c
View file @
82faeb56
...
...
@@ -62,8 +62,8 @@ typedef struct AMVContext
int32_t
aframe_size
;
/* Expected audio frame size. */
int32_t
ablock_align
;
/* Expected audio block align. */
AVPacket
apad
;
/* Dummy audio packet for padding. */
AVPacket
vpad
;
/* Most recent video frame, for padding. */
AVPacket
*
apad
;
/* Dummy audio packet for padding. */
AVPacket
*
vpad
;
/* Most recent video frame, for padding. */
/*
* Cumulative PTS values for each stream, used for the final
...
...
@@ -183,16 +183,25 @@ static av_cold int amv_init(AVFormatContext *s)
}
/* Allocate and fill dummy packet so we can pad the audio. */
if
((
ret
=
av_new_packet
(
&
amv
->
apad
,
amv
->
ablock_align
))
<
0
)
amv
->
apad
=
av_packet_alloc
();
if
(
!
amv
->
apad
)
return
AVERROR
(
ENOMEM
);
if
((
ret
=
av_new_packet
(
amv
->
apad
,
amv
->
ablock_align
))
<
0
)
{
av_packet_free
(
&
amv
->
apad
);
return
ret
;
}
amv
->
apad
.
stream_index
=
AMV_STREAM_AUDIO
;
memset
(
amv
->
apad
.
data
,
0
,
amv
->
ablock_align
);
AV_WL32
(
amv
->
apad
.
data
+
4
,
amv
->
aframe_size
);
amv
->
apad
->
stream_index
=
AMV_STREAM_AUDIO
;
memset
(
amv
->
apad
->
data
,
0
,
amv
->
ablock_align
);
AV_WL32
(
amv
->
apad
->
data
+
4
,
amv
->
aframe_size
);
av_init_packet
(
&
amv
->
vpad
);
amv
->
vpad
.
stream_index
=
AMV_STREAM_VIDEO
;
amv
->
vpad
.
duration
=
1
;
amv
->
vpad
=
av_packet_alloc
();
if
(
!
amv
->
vpad
)
{
av_packet_free
(
&
amv
->
apad
);
return
AVERROR
(
ENOMEM
);
}
amv
->
vpad
->
stream_index
=
AMV_STREAM_VIDEO
;
amv
->
vpad
->
duration
=
1
;
return
0
;
}
...
...
@@ -200,8 +209,8 @@ static void amv_deinit(AVFormatContext *s)
{
AMVContext
*
amv
=
s
->
priv_data
;
av_packet_
unref
(
&
amv
->
apad
);
av_packet_
unref
(
&
amv
->
vpad
);
av_packet_
free
(
&
amv
->
apad
);
av_packet_
free
(
&
amv
->
vpad
);
}
static
void
amv_write_vlist
(
AVFormatContext
*
s
,
AVCodecParameters
*
par
)
...
...
@@ -325,9 +334,9 @@ static int amv_pad(AVFormatContext *s, AVPacket *pkt)
stream_index
=
(
stream_index
+
1
)
%
s
->
nb_streams
;
if
(
stream_index
==
AMV_STREAM_VIDEO
)
return
amv_write_packet_internal
(
s
,
&
amv
->
vpad
);
return
amv_write_packet_internal
(
s
,
amv
->
vpad
);
else
if
(
stream_index
==
AMV_STREAM_AUDIO
)
return
amv_write_packet_internal
(
s
,
&
amv
->
apad
);
return
amv_write_packet_internal
(
s
,
amv
->
apad
);
else
av_assert0
(
0
);
...
...
@@ -348,8 +357,8 @@ static int amv_write_packet(AVFormatContext *s, AVPacket *pkt)
if
(
pkt
->
stream_index
==
AMV_STREAM_VIDEO
)
{
/* Save the last packet for padding. */
av_packet_unref
(
&
amv
->
vpad
);
if
((
ret
=
av_packet_ref
(
&
amv
->
vpad
,
pkt
))
<
0
)
av_packet_unref
(
amv
->
vpad
);
if
((
ret
=
av_packet_ref
(
amv
->
vpad
,
pkt
))
<
0
)
return
ret
;
}
...
...
@@ -366,7 +375,7 @@ static int amv_write_trailer(AVFormatContext *s)
/* Pad-out one last audio frame if needed. */
if
(
amv
->
last_stream
==
AMV_STREAM_VIDEO
)
{
if
((
ret
=
amv_write_packet_internal
(
s
,
&
amv
->
apad
))
<
0
)
if
((
ret
=
amv_write_packet_internal
(
s
,
amv
->
apad
))
<
0
)
return
ret
;
}
...
...
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