Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
8547ffaa
Commit
8547ffaa
authored
Mar 11, 2004
by
Laurent Aimar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* stream_out: sout_buffer_t -> block_t.
parent
298f0e46
Changes
11
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
223 additions
and
286 deletions
+223
-286
modules/stream_out/display.c
modules/stream_out/display.c
+25
-27
modules/stream_out/dummy.c
modules/stream_out/dummy.c
+4
-13
modules/stream_out/duplicate.c
modules/stream_out/duplicate.c
+16
-15
modules/stream_out/es.c
modules/stream_out/es.c
+3
-6
modules/stream_out/gather.c
modules/stream_out/gather.c
+3
-3
modules/stream_out/rtp.c
modules/stream_out/rtp.c
+70
-73
modules/stream_out/standard.c
modules/stream_out/standard.c
+3
-6
modules/stream_out/transcode.c
modules/stream_out/transcode.c
+52
-99
modules/stream_out/transrate/frame.c
modules/stream_out/transrate/frame.c
+23
-23
modules/stream_out/transrate/transrate.c
modules/stream_out/transrate/transrate.c
+21
-18
modules/stream_out/transrate/transrate.h
modules/stream_out/transrate/transrate.h
+3
-3
No files found.
modules/stream_out/display.c
View file @
8547ffaa
...
...
@@ -31,21 +31,12 @@
#include <vlc/input.h>
#include <vlc/sout.h>
#include "codecs.h"
/*****************************************************************************
* Exported prototypes
*****************************************************************************/
static
int
Open
(
vlc_object_t
*
);
static
void
Close
(
vlc_object_t
*
);
static
sout_stream_id_t
*
Add
(
sout_stream_t
*
,
es_format_t
*
);
static
int
Del
(
sout_stream_t
*
,
sout_stream_id_t
*
);
static
int
Send
(
sout_stream_t
*
,
sout_stream_id_t
*
,
sout_buffer_t
*
);
/*****************************************************************************
* Module descriptor
*****************************************************************************/
static
int
Open
(
vlc_object_t
*
);
static
void
Close
(
vlc_object_t
*
);
vlc_module_begin
();
set_description
(
_
(
"Display stream output"
)
);
set_capability
(
"sout stream"
,
50
);
...
...
@@ -53,6 +44,14 @@ vlc_module_begin();
set_callbacks
(
Open
,
Close
);
vlc_module_end
();
/*****************************************************************************
* Exported prototypes
*****************************************************************************/
static
sout_stream_id_t
*
Add
(
sout_stream_t
*
,
es_format_t
*
);
static
int
Del
(
sout_stream_t
*
,
sout_stream_id_t
*
);
static
int
Send
(
sout_stream_t
*
,
sout_stream_id_t
*
,
block_t
*
);
struct
sout_stream_sys_t
{
input_thread_t
*
p_input
;
...
...
@@ -175,32 +174,31 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id )
}
static
int
Send
(
sout_stream_t
*
p_stream
,
sout_stream_id_t
*
id
,
sout_buffer
_t
*
p_buffer
)
block
_t
*
p_buffer
)
{
sout_stream_sys_t
*
p_sys
=
p_stream
->
p_sys
;
while
(
p_buffer
)
{
sout_buffer_t
*
p_next
;
block_t
*
p_block
;
block_t
*
p_next
=
p_buffer
->
p_next
;
p_buffer
->
p_next
=
NULL
;
if
(
id
->
p_es
->
p_dec
&&
p_buffer
->
i_size
>
0
&&
(
p_block
=
block_New
(
p_stream
,
p_buffer
->
i_size
))
)
if
(
id
->
p_es
->
p_dec
&&
p_buffer
->
i_buffer
>
0
)
{
p_block
->
i_dts
=
p_buffer
->
i_dts
<=
0
?
0
:
p_buffer
->
i_dts
+
p_sys
->
i_delay
;
p_block
->
i_pts
=
p_buffer
->
i_pts
<=
0
?
0
:
p_buffer
->
i_pts
+
p_sys
->
i_delay
;
if
(
p_buffer
->
i_dts
<=
0
)
p_buffer
->
i_dts
=
0
;
else
p_buffer
->
i_dts
+=
p_sys
->
i_delay
;
p_stream
->
p_vlc
->
pf_memcpy
(
p_block
->
p_buffer
,
p_buffer
->
p_buffer
,
p_buffer
->
i_size
);
if
(
p_buffer
->
i_pts
<=
0
)
p_buffer
->
i_pts
=
0
;
else
p_buffer
->
i_pts
+=
p_sys
->
i_delay
;
input_DecodeBlock
(
id
->
p_es
->
p_dec
,
p_b
lock
);
input_DecodeBlock
(
id
->
p_es
->
p_dec
,
p_b
uffer
);
}
/* *** go to next buffer *** */
p_next
=
p_buffer
->
p_next
;
sout_BufferDelete
(
p_stream
->
p_sout
,
p_buffer
);
p_buffer
=
p_next
;
}
...
...
modules/stream_out/dummy.c
View file @
8547ffaa
...
...
@@ -2,7 +2,7 @@
* dummy.c: dummy stream output module
*****************************************************************************
* Copyright (C) 2003-2004 VideoLAN
* $Id
: dummy.c,v 1.4 2004/01/25 14:34:25 gbazin Exp
$
* $Id$
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
...
...
@@ -38,7 +38,7 @@ static void Close ( vlc_object_t * );
static
sout_stream_id_t
*
Add
(
sout_stream_t
*
,
es_format_t
*
);
static
int
Del
(
sout_stream_t
*
,
sout_stream_id_t
*
);
static
int
Send
(
sout_stream_t
*
,
sout_stream_id_t
*
,
sout_buffer
_t
*
);
static
int
Send
(
sout_stream_t
*
,
sout_stream_id_t
*
,
block
_t
*
);
/*****************************************************************************
* Module descriptor
...
...
@@ -99,18 +99,9 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id )
}
static
int
Send
(
sout_stream_t
*
p_stream
,
sout_stream_id_t
*
id
,
sout_buffer
_t
*
p_buffer
)
block
_t
*
p_buffer
)
{
sout_buffer_t
*
p_next
;
while
(
p_buffer
)
{
p_next
=
p_buffer
->
p_next
;
sout_BufferDelete
(
p_stream
->
p_sout
,
p_buffer
);
p_buffer
=
p_next
;
}
block_ChainRelease
(
p_buffer
);
return
VLC_SUCCESS
;
}
modules/stream_out/duplicate.c
View file @
8547ffaa
...
...
@@ -2,7 +2,7 @@
* duplicate.c: duplicate stream output module
*****************************************************************************
* Copyright (C) 2003-2004 VideoLAN
* $Id
: duplicate.c,v 1.12 2004/01/25 14:34:25 gbazin Exp
$
* $Id$
*
* Author: Laurent Aimar <fenrir@via.ecp.fr>
*
...
...
@@ -31,19 +31,11 @@
#include <vlc/sout.h>
/*****************************************************************************
*
Exported prototypes
*
Module descriptor
*****************************************************************************/
static
int
Open
(
vlc_object_t
*
);
static
void
Close
(
vlc_object_t
*
);
static
sout_stream_id_t
*
Add
(
sout_stream_t
*
,
es_format_t
*
);
static
int
Del
(
sout_stream_t
*
,
sout_stream_id_t
*
);
static
int
Send
(
sout_stream_t
*
,
sout_stream_id_t
*
,
sout_buffer_t
*
);
/*****************************************************************************
* Module descriptor
*****************************************************************************/
vlc_module_begin
();
set_description
(
_
(
"Duplicate stream output"
)
);
set_capability
(
"sout stream"
,
50
);
...
...
@@ -52,6 +44,15 @@ vlc_module_begin();
set_callbacks
(
Open
,
Close
);
vlc_module_end
();
/*****************************************************************************
* Exported prototypes
*****************************************************************************/
static
sout_stream_id_t
*
Add
(
sout_stream_t
*
,
es_format_t
*
);
static
int
Del
(
sout_stream_t
*
,
sout_stream_id_t
*
);
static
int
Send
(
sout_stream_t
*
,
sout_stream_id_t
*
,
block_t
*
);
struct
sout_stream_sys_t
{
int
i_nb_streams
;
...
...
@@ -242,7 +243,7 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id )
* Send:
*****************************************************************************/
static
int
Send
(
sout_stream_t
*
p_stream
,
sout_stream_id_t
*
id
,
sout_buffer
_t
*
p_buffer
)
block
_t
*
p_buffer
)
{
sout_stream_sys_t
*
p_sys
=
p_stream
->
p_sys
;
sout_stream_t
*
p_dup_stream
;
...
...
@@ -251,18 +252,18 @@ static int Send( sout_stream_t *p_stream, sout_stream_id_t *id,
/* Loop through the linked list of buffers */
while
(
p_buffer
)
{
sout_buffer
_t
*
p_next
=
p_buffer
->
p_next
;
block
_t
*
p_next
=
p_buffer
->
p_next
;
p_buffer
->
p_next
=
NULL
;
for
(
i_stream
=
0
;
i_stream
<
p_sys
->
i_nb_streams
-
1
;
i_stream
++
)
{
sout_buffer
_t
*
p_dup
;
block
_t
*
p_dup
;
p_dup_stream
=
p_sys
->
pp_streams
[
i_stream
];
if
(
id
->
pp_ids
[
i_stream
]
)
{
p_dup
=
sout_BufferDuplicate
(
p_stream
->
p_sout
,
p_buffer
);
p_dup
=
block_Duplicate
(
p_buffer
);
p_dup_stream
->
pf_send
(
p_dup_stream
,
id
->
pp_ids
[
i_stream
],
p_dup
);
...
...
@@ -277,7 +278,7 @@ static int Send( sout_stream_t *p_stream, sout_stream_id_t *id,
}
else
{
sout_BufferDelete
(
p_stream
->
p_sout
,
p_buffer
);
block_Release
(
p_buffer
);
}
p_buffer
=
p_next
;
...
...
modules/stream_out/es.c
View file @
8547ffaa
...
...
@@ -2,7 +2,7 @@
* es.c: Elementary stream output module
*****************************************************************************
* Copyright (C) 2003-2004 VideoLAN
* $Id
: es.c,v 1.5 2004/01/25 14:34:25 gbazin Exp
$
* $Id$
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
...
...
@@ -40,7 +40,7 @@ static void Close ( vlc_object_t * );
static
sout_stream_id_t
*
Add
(
sout_stream_t
*
,
es_format_t
*
);
static
int
Del
(
sout_stream_t
*
,
sout_stream_id_t
*
);
static
int
Send
(
sout_stream_t
*
,
sout_stream_id_t
*
,
sout_buffer
_t
*
);
static
int
Send
(
sout_stream_t
*
,
sout_stream_id_t
*
,
block
_t
*
);
/*****************************************************************************
* Module descriptor
...
...
@@ -288,9 +288,6 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
return
(
NULL
);
}
/* XXX beurk */
p_sout
->
i_preheader
=
__MAX
(
p_sout
->
i_preheader
,
p_mux
->
i_preheader
);
id
=
malloc
(
sizeof
(
sout_stream_id_t
)
);
id
->
p_mux
=
p_mux
;
id
->
p_input
=
sout_MuxAddStream
(
p_mux
,
p_fmt
);
...
...
@@ -320,7 +317,7 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id )
}
static
int
Send
(
sout_stream_t
*
p_stream
,
sout_stream_id_t
*
id
,
sout_buffer
_t
*
p_buffer
)
block
_t
*
p_buffer
)
{
sout_MuxSendBuffer
(
id
->
p_mux
,
id
->
p_input
,
p_buffer
);
...
...
modules/stream_out/gather.c
View file @
8547ffaa
...
...
@@ -2,7 +2,7 @@
* gather.c: gathering stream output module
*****************************************************************************
* Copyright (C) 2003-2004 VideoLAN
* $Id
: gather.c,v 1.3 2004/01/25 14:34:25 gbazin Exp
$
* $Id$
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
...
...
@@ -49,7 +49,7 @@ vlc_module_end();
static
sout_stream_id_t
*
Add
(
sout_stream_t
*
,
es_format_t
*
);
static
int
Del
(
sout_stream_t
*
,
sout_stream_id_t
*
);
static
int
Send
(
sout_stream_t
*
,
sout_stream_id_t
*
,
sout_buffer
_t
*
);
block
_t
*
);
struct
sout_stream_id_t
{
...
...
@@ -187,7 +187,7 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id )
* Send:
*****************************************************************************/
static
int
Send
(
sout_stream_t
*
p_stream
,
sout_stream_id_t
*
id
,
sout_buffer
_t
*
p_buffer
)
sout_stream_id_t
*
id
,
block
_t
*
p_buffer
)
{
sout_stream_sys_t
*
p_sys
=
p_stream
->
p_sys
;
...
...
modules/stream_out/rtp.c
View file @
8547ffaa
This diff is collapsed.
Click to expand it.
modules/stream_out/standard.c
View file @
8547ffaa
...
...
@@ -2,7 +2,7 @@
* standard.c: standard stream output module
*****************************************************************************
* Copyright (C) 2003-2004 VideoLAN
* $Id
: standard.c,v 1.18 2004/01/25 14:34:25 gbazin Exp
$
* $Id$
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
...
...
@@ -42,7 +42,7 @@ static void Close ( vlc_object_t * );
static
sout_stream_id_t
*
Add
(
sout_stream_t
*
,
es_format_t
*
);
static
int
Del
(
sout_stream_t
*
,
sout_stream_id_t
*
);
static
int
Send
(
sout_stream_t
*
,
sout_stream_id_t
*
,
sout_buffer
_t
*
);
static
int
Send
(
sout_stream_t
*
,
sout_stream_id_t
*
,
block
_t
*
);
/*****************************************************************************
* Module descriptor
...
...
@@ -290,9 +290,6 @@ static int Open( vlc_object_t *p_this )
}
#endif
/* XXX beurk */
p_sout
->
i_preheader
=
__MAX
(
p_sout
->
i_preheader
,
p_mux
->
i_preheader
);
p_stream
->
pf_add
=
Add
;
p_stream
->
pf_del
=
Del
;
p_stream
->
pf_send
=
Send
;
...
...
@@ -368,7 +365,7 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id )
}
static
int
Send
(
sout_stream_t
*
p_stream
,
sout_stream_id_t
*
id
,
sout_buffer
_t
*
p_buffer
)
block
_t
*
p_buffer
)
{
sout_stream_sys_t
*
p_sys
=
p_stream
->
p_sys
;
sout_instance_t
*
p_sout
=
p_stream
->
p_sout
;
...
...
modules/stream_out/transcode.c
View file @
8547ffaa
This diff is collapsed.
Click to expand it.
modules/stream_out/transrate/frame.c
View file @
8547ffaa
...
...
@@ -5,7 +5,7 @@
* Copyright (C) 2003 Antoine Missout
* Copyright (C) 2000-2003 Michel Lespinasse <walken@zoy.org>
* Copyright (C) 1999-2000 Aaron Holtzman <aholtzma@ess.engr.uvic.ca>
* $Id
: frame.c,v 1.2 2004/03/03 11:39:06 massiot Exp
$
* $Id$
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Laurent Aimar <fenrir@via.ecp.fr>
...
...
@@ -1636,56 +1636,56 @@ static int do_next_start_code( transrate_t *tr )
}
void
E_
(
process_frame
)(
sout_stream_t
*
p_stream
,
sout_stream_id_t
*
id
,
sout_buffer_t
*
in
,
sout_buffer
_t
**
out
)
sout_stream_id_t
*
id
,
block_t
*
in
,
block
_t
**
out
)
{
transrate_t
*
tr
=
&
id
->
tr
;
bs_transrate_t
*
bs
=
&
tr
->
bs
;
sout_buffer
_t
*
p_out
;
block
_t
*
p_out
;
double
next_fact_x
=
1
.
0
;
/* The output buffer can't be bigger than the input buffer. */
p_out
=
sout_BufferNew
(
p_stream
->
p_sout
,
in
->
i_size
);
p_out
=
block_New
(
p_stream
,
in
->
i_buffer
);
p_out
->
i_length
=
in
->
i_length
;
p_out
->
i_dts
=
in
->
i_dts
;
p_out
->
i_pts
=
in
->
i_pts
;
p_out
->
i_flags
=
in
->
i_flags
;
sout_BufferChain
(
out
,
p_out
);
block_ChainAppend
(
out
,
p_out
);
bs
->
p_rw
=
bs
->
p_ow
=
bs
->
p_w
=
p_out
->
p_buffer
;
bs
->
p_c
=
bs
->
p_r
=
in
->
p_buffer
;
bs
->
p_r
+=
in
->
i_
size
+
4
;
bs
->
p_rw
+=
in
->
i_
size
;
*
(
in
->
p_buffer
+
in
->
i_
size
)
=
0
;
*
(
in
->
p_buffer
+
in
->
i_
size
+
1
)
=
0
;
*
(
in
->
p_buffer
+
in
->
i_
size
+
2
)
=
1
;
*
(
in
->
p_buffer
+
in
->
i_
size
+
3
)
=
0
;
bs
->
p_r
+=
in
->
i_
buffer
+
4
;
bs
->
p_rw
+=
in
->
i_
buffer
;
*
(
in
->
p_buffer
+
in
->
i_
buffer
)
=
0
;
*
(
in
->
p_buffer
+
in
->
i_
buffer
+
1
)
=
0
;
*
(
in
->
p_buffer
+
in
->
i_
buffer
+
2
)
=
1
;
*
(
in
->
p_buffer
+
in
->
i_
buffer
+
3
)
=
0
;
/* Calculate how late we are */
tr
->
quant_corr
=
0
.
0
+
B_HANDICAP
;
tr
->
level_i
=
0
;
tr
->
level_p
=
0
;
bs
->
i_byte_in
=
in
->
i_
size
;
bs
->
i_byte_in
=
in
->
i_
buffer
;
bs
->
i_byte_out
=
0
;
if
(
tr
->
i_current_gop_size
-
in
->
i_
size
>
100
)
if
(
tr
->
i_current_gop_size
-
in
->
i_
buffer
>
100
)
{
if
(
tr
->
i_wanted_gop_size
==
in
->
i_
size
)
if
(
tr
->
i_wanted_gop_size
==
in
->
i_
buffer
)
{
next_fact_x
=
1
.
0
;
}
else
if
(
tr
->
i_wanted_gop_size
<
in
->
i_
size
)
else
if
(
tr
->
i_wanted_gop_size
<
in
->
i_
buffer
)
{
/* We're really late */
next_fact_x
=
10
.
0
;
}
else
{
next_fact_x
=
((
double
)(
tr
->
i_current_gop_size
-
in
->
i_
size
))
/
(
tr
->
i_wanted_gop_size
-
in
->
i_
size
);
next_fact_x
=
((
double
)(
tr
->
i_current_gop_size
-
in
->
i_
buffer
))
/
(
tr
->
i_wanted_gop_size
-
in
->
i_
buffer
);
}
if
(
next_fact_x
>
QUANT_I
)
...
...
@@ -1710,7 +1710,7 @@ void E_(process_frame)( sout_stream_t *p_stream,
for
(
;
;
)
{
uint8_t
*
p_end
=
&
in
->
p_buffer
[
in
->
i_
size
];
uint8_t
*
p_end
=
&
in
->
p_buffer
[
in
->
i_
buffer
];
/* Search next start code */
for
(
;;
)
...
...
@@ -1759,15 +1759,15 @@ void E_(process_frame)( sout_stream_t *p_stream,
}
bs
->
i_byte_out
+=
bs
->
p_w
-
bs
->
p_ow
;
p_out
->
i_
size
=
bs
->
p_w
-
bs
->
p_ow
;
tr
->
i_current_gop_size
-=
in
->
i_
size
;
tr
->
i_wanted_gop_size
-=
p_out
->
i_
size
;
p_out
->
i_
buffer
=
bs
->
p_w
-
bs
->
p_ow
;
tr
->
i_current_gop_size
-=
in
->
i_
buffer
;
tr
->
i_wanted_gop_size
-=
p_out
->
i_
buffer
;
tr
->
i_new_gop_size
+=
bs
->
i_byte_out
;
#if 0
msg_Dbg( p_stream, "%d: %d -> %d (r: %f, n:%f, corr:%f)",
tr->picture_coding_type, in->i_
size
, p_out->i_size,
(float)in->i_
size
/ p_out->i_size,
tr->picture_coding_type, in->i_
buffer
, p_out->i_size,
(float)in->i_
buffer
/ p_out->i_size,
next_fact_x, tr->quant_corr);
#endif
}
...
...
modules/stream_out/transrate/transrate.c
View file @
8547ffaa
...
...
@@ -2,7 +2,7 @@
* transrate.c: MPEG2 video transrating module
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* $Id
: transrate.c,v 1.7 2004/03/03 11:20:52 massiot Exp
$
* $Id$
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Laurent Aimar <fenrir@via.ecp.fr>
...
...
@@ -45,12 +45,12 @@ static void Close ( vlc_object_t * );
static
sout_stream_id_t
*
Add
(
sout_stream_t
*
,
es_format_t
*
);
static
int
Del
(
sout_stream_t
*
,
sout_stream_id_t
*
);
static
int
Send
(
sout_stream_t
*
,
sout_stream_id_t
*
,
sout_buffer
_t
*
);
static
int
Send
(
sout_stream_t
*
,
sout_stream_id_t
*
,
block
_t
*
);
static
int
transrate_video_process
(
sout_stream_t
*
,
sout_stream_id_t
*
,
sout_buffer_t
*
,
sout_buffer
_t
**
);
static
int
transrate_video_process
(
sout_stream_t
*
,
sout_stream_id_t
*
,
block_t
*
,
block
_t
**
);
void
E_
(
process_frame
)(
sout_stream_t
*
p_stream
,
sout_stream_id_t
*
id
,
sout_buffer_t
*
in
,
sout_buffer
_t
**
out
);
sout_stream_id_t
*
id
,
block_t
*
in
,
block
_t
**
out
);
/*****************************************************************************
* Module descriptor
...
...
@@ -130,8 +130,6 @@ static int Open( vlc_object_t *p_this )
p_stream
->
p_sys
=
p_sys
;
p_stream
->
p_sout
->
i_padding
+=
200
;
return
VLC_SUCCESS
;
}
...
...
@@ -205,13 +203,18 @@ static int Del ( sout_stream_t *p_stream, sout_stream_id_t *id )
}
static
int
Send
(
sout_stream_t
*
p_stream
,
sout_stream_id_t
*
id
,
sout_buffer
_t
*
p_buffer
)
block
_t
*
p_buffer
)
{
sout_stream_sys_t
*
p_sys
=
p_stream
->
p_sys
;
if
(
id
->
b_transrate
)
{
sout_buffer_t
*
p_buffer_out
;
block_t
*
p_buffer_out
;
/* be sure to have at least 8 bytes of padding (maybe only 4) */
p_buffer
=
block_Realloc
(
p_buffer
,
0
,
p_buffer
->
i_buffer
+
8
);
p_buffer
->
i_buffer
-=
8
;
memset
(
&
p_buffer
->
p_buffer
[
p_buffer
->
i_buffer
],
0
,
8
);
transrate_video_process
(
p_stream
,
id
,
p_buffer
,
&
p_buffer_out
);
if
(
p_buffer_out
)
...
...
@@ -226,13 +229,13 @@ static int Send( sout_stream_t *p_stream, sout_stream_id_t *id,
}
else
{
sout_BufferDelete
(
p_stream
->
p_sout
,
p_buffer
);
block_Release
(
p_buffer
);
return
VLC_EGENERIC
;
}
}
static
int
transrate_video_process
(
sout_stream_t
*
p_stream
,
sout_stream_id_t
*
id
,
sout_buffer_t
*
in
,
sout_buffer
_t
**
out
)
sout_stream_id_t
*
id
,
block_t
*
in
,
block
_t
**
out
)
{
transrate_t
*
tr
=
&
id
->
tr
;
bs_transrate_t
*
bs
=
&
tr
->
bs
;
...
...
@@ -241,16 +244,16 @@ static int transrate_video_process( sout_stream_t *p_stream,
while
(
in
!=
NULL
)
{
sout_buffer
_t
*
p_next
=
in
->
p_next
;
block
_t
*
p_next
=
in
->
p_next
;
int
i_flags
=
in
->
i_flags
;
in
->
p_next
=
NULL
;
sout_BufferChain
(
&
id
->
p_next_gop
,
in
);
block_ChainAppend
(
&
id
->
p_next_gop
,
in
);
id
->
i_next_gop_duration
+=
in
->
i_length
;
id
->
i_next_gop_size
+=
in
->
i_
size
;
id
->
i_next_gop_size
+=
in
->
i_
buffer
;
in
=
p_next
;
if
(
((
i_flags
&
(
BLOCK_FLAG_TYPE_I
<<
SOUT_BUFFER_FLAGS_BLOCK_SHIFT
)
)
if
(
((
i_flags
&
BLOCK_FLAG_TYPE_I
)
&&
id
->
i_next_gop_duration
>=
300000
)
||
(
id
->
i_next_gop_duration
>
p_stream
->
p_sys
->
i_shaping_delay
)
)
{
...
...
@@ -275,17 +278,17 @@ static int transrate_video_process( sout_stream_t *p_stream,
while
(
id
->
p_current_buffer
!=
NULL
)
{
sout_buffer
_t
*
p_next
=
id
->
p_current_buffer
->
p_next
;
block
_t
*
p_next
=
id
->
p_current_buffer
->
p_next
;
if
(
tr
->
fact_x
==
1
.
0
)
{
bs
->
i_byte_out
+=
id
->
p_current_buffer
->
i_
size
;
bs
->
i_byte_out
+=
id
->
p_current_buffer
->
i_
buffer
;
id
->
p_current_buffer
->
p_next
=
NULL
;
sout_BufferChain
(
out
,
id
->
p_current_buffer
);
block_ChainAppend
(
out
,
id
->
p_current_buffer
);
}
else
{
E_
(
process_frame
)(
p_stream
,
id
,
id
->
p_current_buffer
,
out
);
sout_BufferDelete
(
p_stream
->
p_sout
,
id
->
p_current_buffer
);
block_Release
(
id
->
p_current_buffer
);
}
id
->
p_current_buffer
=
p_next
;
}
...
...
modules/stream_out/transrate/transrate.h
View file @
8547ffaa
...
...
@@ -5,7 +5,7 @@
* Copyright (C) 2003 Antoine Missout
* Copyright (C) 2000-2003 Michel Lespinasse <walken@zoy.org>
* Copyright (C) 1999-2000 Aaron Holtzman <aholtzma@ess.engr.uvic.ca>
* $Id
: transrate.h,v 1.1 2004/03/03 11:20:52 massiot Exp
$
* $Id$
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Laurent Aimar <fenrir@via.ecp.fr>
...
...
@@ -98,8 +98,8 @@ struct sout_stream_id_t
void
*
id
;
vlc_bool_t
b_transrate
;
sout_buffer
_t
*
p_current_buffer
;
sout_buffer
_t
*
p_next_gop
;
block
_t
*
p_current_buffer
;
block
_t
*
p_next_gop
;
mtime_t
i_next_gop_duration
;
size_t
i_next_gop_size
;
...
...
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