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
50f2dfad
Commit
50f2dfad
authored
Jun 09, 2011
by
Anton Khirnov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ffserver: use new avformat_open_* API.
parent
e0518705
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
17 additions
and
20 deletions
+17
-20
ffserver.c
ffserver.c
+17
-20
No files found.
ffserver.c
View file @
50f2dfad
...
...
@@ -205,7 +205,7 @@ typedef struct FFStream {
char
filename
[
1024
];
/* stream filename */
struct
FFStream
*
feed
;
/* feed we are using (can be null if
coming from file) */
AV
FormatParameters
*
ap_in
;
/* input parameters */
AV
Dictionary
*
in_opts
;
/* input parameters */
AVInputFormat
*
ifmt
;
/* if non NULL, force input format */
AVOutputFormat
*
fmt
;
IPAddressACL
*
acl
;
...
...
@@ -2126,7 +2126,7 @@ static int open_input_stream(HTTPContext *c, const char *info)
{
char
buf
[
128
];
char
input_filename
[
1024
];
AVFormatContext
*
s
;
AVFormatContext
*
s
=
NULL
;
int
buf_size
,
i
,
ret
;
int64_t
stream_pos
;
...
...
@@ -2157,8 +2157,7 @@ static int open_input_stream(HTTPContext *c, const char *info)
return
-
1
;
/* open stream */
if
((
ret
=
av_open_input_file
(
&
s
,
input_filename
,
c
->
stream
->
ifmt
,
buf_size
,
c
->
stream
->
ap_in
))
<
0
)
{
if
((
ret
=
avformat_open_input
(
&
s
,
input_filename
,
c
->
stream
->
ifmt
,
&
c
->
stream
->
in_opts
))
<
0
)
{
http_log
(
"could not open %s: %d
\n
"
,
input_filename
,
ret
);
return
-
1
;
}
...
...
@@ -2268,8 +2267,7 @@ static int http_prepare_data(HTTPContext *c)
c
->
fmt_ctx
.
preload
=
(
int
)(
0
.
5
*
AV_TIME_BASE
);
c
->
fmt_ctx
.
max_delay
=
(
int
)(
0
.
7
*
AV_TIME_BASE
);
av_set_parameters
(
&
c
->
fmt_ctx
,
NULL
);
if
(
av_write_header
(
&
c
->
fmt_ctx
)
<
0
)
{
if
(
avformat_write_header
(
&
c
->
fmt_ctx
,
NULL
)
<
0
)
{
http_log
(
"Error writing output header
\n
"
);
return
-
1
;
}
...
...
@@ -2709,11 +2707,14 @@ static int http_receive_data(HTTPContext *c)
}
}
else
{
/* We have a header in our hands that contains useful data */
AVFormatContext
*
s
=
NULL
;
AVFormatContext
*
s
=
avformat_alloc_context
()
;
AVIOContext
*
pb
;
AVInputFormat
*
fmt_in
;
int
i
;
if
(
!
s
)
goto
fail
;
/* use feed output format name to find corresponding input format */
fmt_in
=
av_find_input_format
(
feed
->
fmt
->
name
);
if
(
!
fmt_in
)
...
...
@@ -2723,7 +2724,8 @@ static int http_receive_data(HTTPContext *c)
0
,
NULL
,
NULL
,
NULL
,
NULL
);
pb
->
seekable
=
0
;
if
(
av_open_input_stream
(
&
s
,
pb
,
c
->
stream
->
feed_filename
,
fmt_in
,
NULL
)
<
0
)
{
s
->
pb
=
pb
;
if
(
avformat_open_input
(
&
s
,
c
->
stream
->
feed_filename
,
fmt_in
,
NULL
)
<
0
)
{
av_free
(
pb
);
goto
fail
;
}
...
...
@@ -3442,8 +3444,7 @@ static int rtp_new_av_stream(HTTPContext *c,
/* XXX: close stream */
goto
fail
;
}
av_set_parameters
(
ctx
,
NULL
);
if
(
av_write_header
(
ctx
)
<
0
)
{
if
(
avformat_write_header
(
ctx
,
NULL
)
<
0
)
{
fail:
if
(
h
)
url_close
(
h
);
...
...
@@ -3597,28 +3598,25 @@ static void extract_mpeg4_header(AVFormatContext *infile)
static
void
build_file_streams
(
void
)
{
FFStream
*
stream
,
*
stream_next
;
AVFormatContext
*
infile
;
int
i
,
ret
;
/* gather all streams */
for
(
stream
=
first_stream
;
stream
!=
NULL
;
stream
=
stream_next
)
{
AVFormatContext
*
infile
=
NULL
;
stream_next
=
stream
->
next
;
if
(
stream
->
stream_type
==
STREAM_TYPE_LIVE
&&
!
stream
->
feed
)
{
/* the stream comes from a file */
/* try to open the file */
/* open stream */
stream
->
ap_in
=
av_mallocz
(
sizeof
(
AVFormatParameters
));
if
(
stream
->
fmt
&&
!
strcmp
(
stream
->
fmt
->
name
,
"rtp"
))
{
/* specific case : if transport stream output to RTP,
we use a raw transport stream reader */
stream
->
ap_in
->
mpeg2ts_raw
=
1
;
stream
->
ap_in
->
mpeg2ts_compute_pcr
=
1
;
av_dict_set
(
&
stream
->
in_opts
,
"mpeg2ts_compute_pcr"
,
"1"
,
0
);
}
http_log
(
"Opening file '%s'
\n
"
,
stream
->
feed_filename
);
if
((
ret
=
av_open_input_file
(
&
infile
,
stream
->
feed_filename
,
stream
->
ifmt
,
0
,
stream
->
ap_in
))
<
0
)
{
if
((
ret
=
avformat_open_input
(
&
infile
,
stream
->
feed_filename
,
stream
->
ifmt
,
&
stream
->
in_opts
))
<
0
)
{
http_log
(
"Could not open '%s': %d
\n
"
,
stream
->
feed_filename
,
ret
);
/* remove stream (no need to spend more time on it) */
fail:
...
...
@@ -3678,10 +3676,10 @@ static void build_feed_streams(void)
if
(
avio_check
(
feed
->
feed_filename
,
AVIO_FLAG_READ
)
>
0
)
{
/* See if it matches */
AVFormatContext
*
s
;
AVFormatContext
*
s
=
NULL
;
int
matches
=
0
;
if
(
av
_open_input_file
(
&
s
,
feed
->
feed_filename
,
NULL
,
FFM_PACKET_SIZE
,
NULL
)
>=
0
)
{
if
(
av
format_open_input
(
&
s
,
feed
->
feed_filename
,
NULL
,
NULL
)
>=
0
)
{
/* Now see if it matches */
if
(
s
->
nb_streams
==
feed
->
nb_streams
)
{
matches
=
1
;
...
...
@@ -3767,8 +3765,7 @@ static void build_feed_streams(void)
s
->
oformat
=
feed
->
fmt
;
s
->
nb_streams
=
feed
->
nb_streams
;
s
->
streams
=
feed
->
streams
;
av_set_parameters
(
s
,
NULL
);
if
(
av_write_header
(
s
)
<
0
)
{
if
(
avformat_write_header
(
s
,
NULL
)
<
0
)
{
http_log
(
"Container doesn't supports the required parameters
\n
"
);
exit
(
1
);
}
...
...
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