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
dd2a4bcf
Commit
dd2a4bcf
authored
Feb 25, 2012
by
Anton Khirnov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
lavf: generic code for exporting attached pictures.
parent
a93b09cb
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
44 additions
and
18 deletions
+44
-18
avformat.h
libavformat/avformat.h
+16
-0
utils.c
libavformat/utils.c
+28
-18
No files found.
libavformat/avformat.h
View file @
dd2a4bcf
...
...
@@ -530,6 +530,13 @@ typedef struct AVIndexEntry {
#define AV_DISPOSITION_HEARING_IMPAIRED 0x0080
/**< stream for hearing impaired audiences */
#define AV_DISPOSITION_VISUAL_IMPAIRED 0x0100
/**< stream for visual impaired audiences */
#define AV_DISPOSITION_CLEAN_EFFECTS 0x0200
/**< stream without voice */
/**
* The stream is stored in the file as an attached picture/"cover art" (e.g.
* APIC frame in ID3v2). The single packet associated with it will be returned
* among the first few packets read from the file unless seeking takes place.
* It can also be accessed at any time in AVStream.attached_pic.
*/
#define AV_DISPOSITION_ATTACHED_PIC 0x0400
/**
* Stream structure.
...
...
@@ -602,6 +609,15 @@ typedef struct AVStream {
*/
AVRational
avg_frame_rate
;
/**
* For streams with AV_DISPOSITION_ATTACHED_PIC disposition, this packet
* will contain the attached picture.
*
* decoding: set by libavformat, must not be modified by the caller.
* encoding: unused
*/
AVPacket
attached_pic
;
/*****************************************************************
* All fields below this line are not part of the public API. They
* may not be used outside of libavformat and can be changed and
...
...
libavformat/utils.c
View file @
dd2a4bcf
...
...
@@ -498,10 +498,27 @@ static int init_input(AVFormatContext *s, const char *filename, AVDictionary **o
return
av_probe_input_buffer
(
s
->
pb
,
&
s
->
iformat
,
filename
,
s
,
0
,
0
);
}
static
AVPacket
*
add_to_pktbuf
(
AVPacketList
**
packet_buffer
,
AVPacket
*
pkt
,
AVPacketList
**
plast_pktl
){
AVPacketList
*
pktl
=
av_mallocz
(
sizeof
(
AVPacketList
));
if
(
!
pktl
)
return
NULL
;
if
(
*
packet_buffer
)
(
*
plast_pktl
)
->
next
=
pktl
;
else
*
packet_buffer
=
pktl
;
/* add the packet in the buffered packet list */
*
plast_pktl
=
pktl
;
pktl
->
pkt
=
*
pkt
;
return
&
pktl
->
pkt
;
}
int
avformat_open_input
(
AVFormatContext
**
ps
,
const
char
*
filename
,
AVInputFormat
*
fmt
,
AVDictionary
**
options
)
{
AVFormatContext
*
s
=
*
ps
;
int
ret
=
0
;
int
i
,
ret
=
0
;
AVDictionary
*
tmp
=
NULL
;
if
(
!
s
&&
!
(
s
=
avformat_alloc_context
()))
...
...
@@ -551,6 +568,14 @@ int avformat_open_input(AVFormatContext **ps, const char *filename, AVInputForma
if
((
ret
=
s
->
iformat
->
read_header
(
s
))
<
0
)
goto
fail
;
/* queue attached pictures */
for
(
i
=
0
;
i
<
s
->
nb_streams
;
i
++
)
if
(
s
->
streams
[
i
]
->
disposition
&
AV_DISPOSITION_ATTACHED_PIC
)
{
AVPacket
copy
=
s
->
streams
[
i
]
->
attached_pic
;
copy
.
destruct
=
NULL
;
add_to_pktbuf
(
&
s
->
raw_packet_buffer
,
&
copy
,
&
s
->
raw_packet_buffer_end
);
}
if
(
s
->
pb
&&
!
s
->
data_offset
)
s
->
data_offset
=
avio_tell
(
s
->
pb
);
...
...
@@ -574,23 +599,6 @@ fail:
/*******************************************************/
static
AVPacket
*
add_to_pktbuf
(
AVPacketList
**
packet_buffer
,
AVPacket
*
pkt
,
AVPacketList
**
plast_pktl
){
AVPacketList
*
pktl
=
av_mallocz
(
sizeof
(
AVPacketList
));
if
(
!
pktl
)
return
NULL
;
if
(
*
packet_buffer
)
(
*
plast_pktl
)
->
next
=
pktl
;
else
*
packet_buffer
=
pktl
;
/* add the packet in the buffered packet list */
*
plast_pktl
=
pktl
;
pktl
->
pkt
=
*
pkt
;
return
&
pktl
->
pkt
;
}
int
av_read_packet
(
AVFormatContext
*
s
,
AVPacket
*
pkt
)
{
int
ret
,
i
;
...
...
@@ -2547,6 +2555,8 @@ void avformat_free_context(AVFormatContext *s)
av_parser_close
(
st
->
parser
);
av_free_packet
(
&
st
->
cur_pkt
);
}
if
(
st
->
attached_pic
.
data
)
av_free_packet
(
&
st
->
attached_pic
);
av_dict_free
(
&
st
->
metadata
);
av_free
(
st
->
index_entries
);
av_free
(
st
->
codec
->
extradata
);
...
...
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