Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
F
ffmpeg
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
ffmpeg
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 {
...
@@ -205,7 +205,7 @@ typedef struct FFStream {
char
filename
[
1024
];
/* stream filename */
char
filename
[
1024
];
/* stream filename */
struct
FFStream
*
feed
;
/* feed we are using (can be null if
struct
FFStream
*
feed
;
/* feed we are using (can be null if
coming from file) */
coming from file) */
AV
FormatParameters
*
ap_in
;
/* input parameters */
AV
Dictionary
*
in_opts
;
/* input parameters */
AVInputFormat
*
ifmt
;
/* if non NULL, force input format */
AVInputFormat
*
ifmt
;
/* if non NULL, force input format */
AVOutputFormat
*
fmt
;
AVOutputFormat
*
fmt
;
IPAddressACL
*
acl
;
IPAddressACL
*
acl
;
...
@@ -2126,7 +2126,7 @@ static int open_input_stream(HTTPContext *c, const char *info)
...
@@ -2126,7 +2126,7 @@ static int open_input_stream(HTTPContext *c, const char *info)
{
{
char
buf
[
128
];
char
buf
[
128
];
char
input_filename
[
1024
];
char
input_filename
[
1024
];
AVFormatContext
*
s
;
AVFormatContext
*
s
=
NULL
;
int
buf_size
,
i
,
ret
;
int
buf_size
,
i
,
ret
;
int64_t
stream_pos
;
int64_t
stream_pos
;
...
@@ -2157,8 +2157,7 @@ static int open_input_stream(HTTPContext *c, const char *info)
...
@@ -2157,8 +2157,7 @@ static int open_input_stream(HTTPContext *c, const char *info)
return
-
1
;
return
-
1
;
/* open stream */
/* open stream */
if
((
ret
=
av_open_input_file
(
&
s
,
input_filename
,
c
->
stream
->
ifmt
,
if
((
ret
=
avformat_open_input
(
&
s
,
input_filename
,
c
->
stream
->
ifmt
,
&
c
->
stream
->
in_opts
))
<
0
)
{
buf_size
,
c
->
stream
->
ap_in
))
<
0
)
{
http_log
(
"could not open %s: %d
\n
"
,
input_filename
,
ret
);
http_log
(
"could not open %s: %d
\n
"
,
input_filename
,
ret
);
return
-
1
;
return
-
1
;
}
}
...
@@ -2268,8 +2267,7 @@ static int http_prepare_data(HTTPContext *c)
...
@@ -2268,8 +2267,7 @@ static int http_prepare_data(HTTPContext *c)
c
->
fmt_ctx
.
preload
=
(
int
)(
0
.
5
*
AV_TIME_BASE
);
c
->
fmt_ctx
.
preload
=
(
int
)(
0
.
5
*
AV_TIME_BASE
);
c
->
fmt_ctx
.
max_delay
=
(
int
)(
0
.
7
*
AV_TIME_BASE
);
c
->
fmt_ctx
.
max_delay
=
(
int
)(
0
.
7
*
AV_TIME_BASE
);
av_set_parameters
(
&
c
->
fmt_ctx
,
NULL
);
if
(
avformat_write_header
(
&
c
->
fmt_ctx
,
NULL
)
<
0
)
{
if
(
av_write_header
(
&
c
->
fmt_ctx
)
<
0
)
{
http_log
(
"Error writing output header
\n
"
);
http_log
(
"Error writing output header
\n
"
);
return
-
1
;
return
-
1
;
}
}
...
@@ -2709,11 +2707,14 @@ static int http_receive_data(HTTPContext *c)
...
@@ -2709,11 +2707,14 @@ static int http_receive_data(HTTPContext *c)
}
}
}
else
{
}
else
{
/* We have a header in our hands that contains useful data */
/* We have a header in our hands that contains useful data */
AVFormatContext
*
s
=
NULL
;
AVFormatContext
*
s
=
avformat_alloc_context
()
;
AVIOContext
*
pb
;
AVIOContext
*
pb
;
AVInputFormat
*
fmt_in
;
AVInputFormat
*
fmt_in
;
int
i
;
int
i
;
if
(
!
s
)
goto
fail
;
/* use feed output format name to find corresponding input format */
/* use feed output format name to find corresponding input format */
fmt_in
=
av_find_input_format
(
feed
->
fmt
->
name
);
fmt_in
=
av_find_input_format
(
feed
->
fmt
->
name
);
if
(
!
fmt_in
)
if
(
!
fmt_in
)
...
@@ -2723,7 +2724,8 @@ static int http_receive_data(HTTPContext *c)
...
@@ -2723,7 +2724,8 @@ static int http_receive_data(HTTPContext *c)
0
,
NULL
,
NULL
,
NULL
,
NULL
);
0
,
NULL
,
NULL
,
NULL
,
NULL
);
pb
->
seekable
=
0
;
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
);
av_free
(
pb
);
goto
fail
;
goto
fail
;
}
}
...
@@ -3442,8 +3444,7 @@ static int rtp_new_av_stream(HTTPContext *c,
...
@@ -3442,8 +3444,7 @@ static int rtp_new_av_stream(HTTPContext *c,
/* XXX: close stream */
/* XXX: close stream */
goto
fail
;
goto
fail
;
}
}
av_set_parameters
(
ctx
,
NULL
);
if
(
avformat_write_header
(
ctx
,
NULL
)
<
0
)
{
if
(
av_write_header
(
ctx
)
<
0
)
{
fail:
fail:
if
(
h
)
if
(
h
)
url_close
(
h
);
url_close
(
h
);
...
@@ -3597,28 +3598,25 @@ static void extract_mpeg4_header(AVFormatContext *infile)
...
@@ -3597,28 +3598,25 @@ static void extract_mpeg4_header(AVFormatContext *infile)
static
void
build_file_streams
(
void
)
static
void
build_file_streams
(
void
)
{
{
FFStream
*
stream
,
*
stream_next
;
FFStream
*
stream
,
*
stream_next
;
AVFormatContext
*
infile
;
int
i
,
ret
;
int
i
,
ret
;
/* gather all streams */
/* gather all streams */
for
(
stream
=
first_stream
;
stream
!=
NULL
;
stream
=
stream_next
)
{
for
(
stream
=
first_stream
;
stream
!=
NULL
;
stream
=
stream_next
)
{
AVFormatContext
*
infile
=
NULL
;
stream_next
=
stream
->
next
;
stream_next
=
stream
->
next
;
if
(
stream
->
stream_type
==
STREAM_TYPE_LIVE
&&
if
(
stream
->
stream_type
==
STREAM_TYPE_LIVE
&&
!
stream
->
feed
)
{
!
stream
->
feed
)
{
/* the stream comes from a file */
/* the stream comes from a file */
/* try to open the file */
/* try to open the file */
/* open stream */
/* open stream */
stream
->
ap_in
=
av_mallocz
(
sizeof
(
AVFormatParameters
));
if
(
stream
->
fmt
&&
!
strcmp
(
stream
->
fmt
->
name
,
"rtp"
))
{
if
(
stream
->
fmt
&&
!
strcmp
(
stream
->
fmt
->
name
,
"rtp"
))
{
/* specific case : if transport stream output to RTP,
/* specific case : if transport stream output to RTP,
we use a raw transport stream reader */
we use a raw transport stream reader */
stream
->
ap_in
->
mpeg2ts_raw
=
1
;
av_dict_set
(
&
stream
->
in_opts
,
"mpeg2ts_compute_pcr"
,
"1"
,
0
);
stream
->
ap_in
->
mpeg2ts_compute_pcr
=
1
;
}
}
http_log
(
"Opening file '%s'
\n
"
,
stream
->
feed_filename
);
http_log
(
"Opening file '%s'
\n
"
,
stream
->
feed_filename
);
if
((
ret
=
av_open_input_file
(
&
infile
,
stream
->
feed_filename
,
if
((
ret
=
avformat_open_input
(
&
infile
,
stream
->
feed_filename
,
stream
->
ifmt
,
&
stream
->
in_opts
))
<
0
)
{
stream
->
ifmt
,
0
,
stream
->
ap_in
))
<
0
)
{
http_log
(
"Could not open '%s': %d
\n
"
,
stream
->
feed_filename
,
ret
);
http_log
(
"Could not open '%s': %d
\n
"
,
stream
->
feed_filename
,
ret
);
/* remove stream (no need to spend more time on it) */
/* remove stream (no need to spend more time on it) */
fail:
fail:
...
@@ -3678,10 +3676,10 @@ static void build_feed_streams(void)
...
@@ -3678,10 +3676,10 @@ static void build_feed_streams(void)
if
(
avio_check
(
feed
->
feed_filename
,
AVIO_FLAG_READ
)
>
0
)
{
if
(
avio_check
(
feed
->
feed_filename
,
AVIO_FLAG_READ
)
>
0
)
{
/* See if it matches */
/* See if it matches */
AVFormatContext
*
s
;
AVFormatContext
*
s
=
NULL
;
int
matches
=
0
;
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 */
/* Now see if it matches */
if
(
s
->
nb_streams
==
feed
->
nb_streams
)
{
if
(
s
->
nb_streams
==
feed
->
nb_streams
)
{
matches
=
1
;
matches
=
1
;
...
@@ -3767,8 +3765,7 @@ static void build_feed_streams(void)
...
@@ -3767,8 +3765,7 @@ static void build_feed_streams(void)
s
->
oformat
=
feed
->
fmt
;
s
->
oformat
=
feed
->
fmt
;
s
->
nb_streams
=
feed
->
nb_streams
;
s
->
nb_streams
=
feed
->
nb_streams
;
s
->
streams
=
feed
->
streams
;
s
->
streams
=
feed
->
streams
;
av_set_parameters
(
s
,
NULL
);
if
(
avformat_write_header
(
s
,
NULL
)
<
0
)
{
if
(
av_write_header
(
s
)
<
0
)
{
http_log
(
"Container doesn't supports the required parameters
\n
"
);
http_log
(
"Container doesn't supports the required parameters
\n
"
);
exit
(
1
);
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