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
Show 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 @@
...
@@ -31,21 +31,12 @@
#include <vlc/input.h>
#include <vlc/input.h>
#include <vlc/sout.h>
#include <vlc/sout.h>
#include "codecs.h"
/*****************************************************************************
/*****************************************************************************
*
Exported prototypes
*
Module descriptor
*****************************************************************************/
*****************************************************************************/
static
int
Open
(
vlc_object_t
*
);
static
int
Open
(
vlc_object_t
*
);
static
void
Close
(
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
();
vlc_module_begin
();
set_description
(
_
(
"Display stream output"
)
);
set_description
(
_
(
"Display stream output"
)
);
set_capability
(
"sout stream"
,
50
);
set_capability
(
"sout stream"
,
50
);
...
@@ -53,6 +44,14 @@ vlc_module_begin();
...
@@ -53,6 +44,14 @@ vlc_module_begin();
set_callbacks
(
Open
,
Close
);
set_callbacks
(
Open
,
Close
);
vlc_module_end
();
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
struct
sout_stream_sys_t
{
{
input_thread_t
*
p_input
;
input_thread_t
*
p_input
;
...
@@ -175,32 +174,31 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id )
...
@@ -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
,
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_sys_t
*
p_sys
=
p_stream
->
p_sys
;
while
(
p_buffer
)
while
(
p_buffer
)
{
{
sout_buffer_t
*
p_next
;
block_t
*
p_next
=
p_buffer
->
p_next
;
block_t
*
p_block
;
p_buffer
->
p_next
=
NULL
;
if
(
id
->
p_es
->
p_dec
&&
p_buffer
->
i_size
>
0
&&
if
(
id
->
p_es
->
p_dec
&&
p_buffer
->
i_buffer
>
0
)
(
p_block
=
block_New
(
p_stream
,
p_buffer
->
i_size
))
)
{
{
p_block
->
i_dts
=
p_buffer
->
i_dts
<=
0
?
0
:
if
(
p_buffer
->
i_dts
<=
0
)
p_buffer
->
i_dts
+
p_sys
->
i_delay
;
p_buffer
->
i_dts
=
0
;
p_block
->
i_pts
=
p_buffer
->
i_pts
<=
0
?
0
:
else
p_buffer
->
i_pts
+
p_sys
->
i_delay
;
p_buffer
->
i_dts
+=
p_sys
->
i_delay
;
p_stream
->
p_vlc
->
pf_memcpy
(
p_block
->
p_buffer
,
if
(
p_buffer
->
i_pts
<=
0
)
p_buffer
->
p_buffer
,
p_buffer
->
i_size
);
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
;
p_buffer
=
p_next
;
}
}
...
...
modules/stream_out/dummy.c
View file @
8547ffaa
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* dummy.c: dummy stream output module
* dummy.c: dummy stream output module
*****************************************************************************
*****************************************************************************
* Copyright (C) 2003-2004 VideoLAN
* 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>
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
*
...
@@ -38,7 +38,7 @@ static void Close ( vlc_object_t * );
...
@@ -38,7 +38,7 @@ static void Close ( vlc_object_t * );
static
sout_stream_id_t
*
Add
(
sout_stream_t
*
,
es_format_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
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
* Module descriptor
...
@@ -99,18 +99,9 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id )
...
@@ -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
,
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
;
block_ChainRelease
(
p_buffer
);
while
(
p_buffer
)
{
p_next
=
p_buffer
->
p_next
;
sout_BufferDelete
(
p_stream
->
p_sout
,
p_buffer
);
p_buffer
=
p_next
;
}
return
VLC_SUCCESS
;
return
VLC_SUCCESS
;
}
}
modules/stream_out/duplicate.c
View file @
8547ffaa
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* duplicate.c: duplicate stream output module
* duplicate.c: duplicate stream output module
*****************************************************************************
*****************************************************************************
* Copyright (C) 2003-2004 VideoLAN
* 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>
* Author: Laurent Aimar <fenrir@via.ecp.fr>
*
*
...
@@ -31,19 +31,11 @@
...
@@ -31,19 +31,11 @@
#include <vlc/sout.h>
#include <vlc/sout.h>
/*****************************************************************************
/*****************************************************************************
*
Exported prototypes
*
Module descriptor
*****************************************************************************/
*****************************************************************************/
static
int
Open
(
vlc_object_t
*
);
static
int
Open
(
vlc_object_t
*
);
static
void
Close
(
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
();
vlc_module_begin
();
set_description
(
_
(
"Duplicate stream output"
)
);
set_description
(
_
(
"Duplicate stream output"
)
);
set_capability
(
"sout stream"
,
50
);
set_capability
(
"sout stream"
,
50
);
...
@@ -52,6 +44,15 @@ vlc_module_begin();
...
@@ -52,6 +44,15 @@ vlc_module_begin();
set_callbacks
(
Open
,
Close
);
set_callbacks
(
Open
,
Close
);
vlc_module_end
();
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
struct
sout_stream_sys_t
{
{
int
i_nb_streams
;
int
i_nb_streams
;
...
@@ -242,7 +243,7 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id )
...
@@ -242,7 +243,7 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id )
* Send:
* Send:
*****************************************************************************/
*****************************************************************************/
static
int
Send
(
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_stream_sys_t
*
p_sys
=
p_stream
->
p_sys
;
sout_stream_t
*
p_dup_stream
;
sout_stream_t
*
p_dup_stream
;
...
@@ -251,18 +252,18 @@ static int Send( sout_stream_t *p_stream, sout_stream_id_t *id,
...
@@ -251,18 +252,18 @@ static int Send( sout_stream_t *p_stream, sout_stream_id_t *id,
/* Loop through the linked list of buffers */
/* Loop through the linked list of buffers */
while
(
p_buffer
)
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
;
p_buffer
->
p_next
=
NULL
;
for
(
i_stream
=
0
;
i_stream
<
p_sys
->
i_nb_streams
-
1
;
i_stream
++
)
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
];
p_dup_stream
=
p_sys
->
pp_streams
[
i_stream
];
if
(
id
->
pp_ids
[
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_stream
->
pf_send
(
p_dup_stream
,
id
->
pp_ids
[
i_stream
],
p_dup
);
p_dup
);
...
@@ -277,7 +278,7 @@ static int Send( sout_stream_t *p_stream, sout_stream_id_t *id,
...
@@ -277,7 +278,7 @@ static int Send( sout_stream_t *p_stream, sout_stream_id_t *id,
}
}
else
else
{
{
sout_BufferDelete
(
p_stream
->
p_sout
,
p_buffer
);
block_Release
(
p_buffer
);
}
}
p_buffer
=
p_next
;
p_buffer
=
p_next
;
...
...
modules/stream_out/es.c
View file @
8547ffaa
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* es.c: Elementary stream output module
* es.c: Elementary stream output module
*****************************************************************************
*****************************************************************************
* Copyright (C) 2003-2004 VideoLAN
* 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>
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
*
...
@@ -40,7 +40,7 @@ static void Close ( vlc_object_t * );
...
@@ -40,7 +40,7 @@ static void Close ( vlc_object_t * );
static
sout_stream_id_t
*
Add
(
sout_stream_t
*
,
es_format_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
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
* Module descriptor
...
@@ -288,9 +288,6 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
...
@@ -288,9 +288,6 @@ static sout_stream_id_t *Add( sout_stream_t *p_stream, es_format_t *p_fmt )
return
(
NULL
);
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
=
malloc
(
sizeof
(
sout_stream_id_t
)
);
id
->
p_mux
=
p_mux
;
id
->
p_mux
=
p_mux
;
id
->
p_input
=
sout_MuxAddStream
(
p_mux
,
p_fmt
);
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 )
...
@@ -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
,
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
);
sout_MuxSendBuffer
(
id
->
p_mux
,
id
->
p_input
,
p_buffer
);
...
...
modules/stream_out/gather.c
View file @
8547ffaa
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* gather.c: gathering stream output module
* gather.c: gathering stream output module
*****************************************************************************
*****************************************************************************
* Copyright (C) 2003-2004 VideoLAN
* 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>
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
*
...
@@ -49,7 +49,7 @@ vlc_module_end();
...
@@ -49,7 +49,7 @@ vlc_module_end();
static
sout_stream_id_t
*
Add
(
sout_stream_t
*
,
es_format_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
Del
(
sout_stream_t
*
,
sout_stream_id_t
*
);
static
int
Send
(
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
struct
sout_stream_id_t
{
{
...
@@ -187,7 +187,7 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id )
...
@@ -187,7 +187,7 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id )
* Send:
* Send:
*****************************************************************************/
*****************************************************************************/
static
int
Send
(
sout_stream_t
*
p_stream
,
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
;
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 @@
...
@@ -2,7 +2,7 @@
* standard.c: standard stream output module
* standard.c: standard stream output module
*****************************************************************************
*****************************************************************************
* Copyright (C) 2003-2004 VideoLAN
* 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>
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
*
...
@@ -42,7 +42,7 @@ static void Close ( vlc_object_t * );
...
@@ -42,7 +42,7 @@ static void Close ( vlc_object_t * );
static
sout_stream_id_t
*
Add
(
sout_stream_t
*
,
es_format_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
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
* Module descriptor
...
@@ -290,9 +290,6 @@ static int Open( vlc_object_t *p_this )
...
@@ -290,9 +290,6 @@ static int Open( vlc_object_t *p_this )
}
}
#endif
#endif
/* XXX beurk */
p_sout
->
i_preheader
=
__MAX
(
p_sout
->
i_preheader
,
p_mux
->
i_preheader
);
p_stream
->
pf_add
=
Add
;
p_stream
->
pf_add
=
Add
;
p_stream
->
pf_del
=
Del
;
p_stream
->
pf_del
=
Del
;
p_stream
->
pf_send
=
Send
;
p_stream
->
pf_send
=
Send
;
...
@@ -368,7 +365,7 @@ static int Del( sout_stream_t *p_stream, sout_stream_id_t *id )
...
@@ -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
,
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_sys_t
*
p_sys
=
p_stream
->
p_sys
;
sout_instance_t
*
p_sout
=
p_stream
->
p_sout
;
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 @@
...
@@ -5,7 +5,7 @@
* Copyright (C) 2003 Antoine Missout
* Copyright (C) 2003 Antoine Missout
* Copyright (C) 2000-2003 Michel Lespinasse <walken@zoy.org>
* Copyright (C) 2000-2003 Michel Lespinasse <walken@zoy.org>
* Copyright (C) 1999-2000 Aaron Holtzman <aholtzma@ess.engr.uvic.ca>
* 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>
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Laurent Aimar <fenrir@via.ecp.fr>
* Laurent Aimar <fenrir@via.ecp.fr>
...
@@ -1636,56 +1636,56 @@ static int do_next_start_code( transrate_t *tr )
...
@@ -1636,56 +1636,56 @@ static int do_next_start_code( transrate_t *tr )
}
}
void
E_
(
process_frame
)(
sout_stream_t
*
p_stream
,
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
;
transrate_t
*
tr
=
&
id
->
tr
;
bs_transrate_t
*
bs
=
&
tr
->
bs
;
bs_transrate_t
*
bs
=
&
tr
->
bs
;
sout_buffer
_t
*
p_out
;
block
_t
*
p_out
;
double
next_fact_x
=
1
.
0
;
double
next_fact_x
=
1
.
0
;
/* The output buffer can't be bigger than the input buffer. */
/* 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_length
=
in
->
i_length
;
p_out
->
i_dts
=
in
->
i_dts
;
p_out
->
i_dts
=
in
->
i_dts
;
p_out
->
i_pts
=
in
->
i_pts
;
p_out
->
i_pts
=
in
->
i_pts
;
p_out
->
i_flags
=
in
->
i_flags
;
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_rw
=
bs
->
p_ow
=
bs
->
p_w
=
p_out
->
p_buffer
;
bs
->
p_c
=
bs
->
p_r
=
in
->
p_buffer
;
bs
->
p_c
=
bs
->
p_r
=
in
->
p_buffer
;
bs
->
p_r
+=
in
->
i_
size
+
4
;
bs
->
p_r
+=
in
->
i_
buffer
+
4
;
bs
->
p_rw
+=
in
->
i_
size
;
bs
->
p_rw
+=
in
->
i_
buffer
;
*
(
in
->
p_buffer
+
in
->
i_
size
)
=
0
;
*
(
in
->
p_buffer
+
in
->
i_
buffer
)
=
0
;
*
(
in
->
p_buffer
+
in
->
i_
size
+
1
)
=
0
;
*
(
in
->
p_buffer
+
in
->
i_
buffer
+
1
)
=
0
;
*
(
in
->
p_buffer
+
in
->
i_
size
+
2
)
=
1
;
*
(
in
->
p_buffer
+
in
->
i_
buffer
+
2
)
=
1
;
*
(
in
->
p_buffer
+
in
->
i_
size
+
3
)
=
0
;
*
(
in
->
p_buffer
+
in
->
i_
buffer
+
3
)
=
0
;
/* Calculate how late we are */
/* Calculate how late we are */
tr
->
quant_corr
=
0
.
0
+
B_HANDICAP
;
tr
->
quant_corr
=
0
.
0
+
B_HANDICAP
;
tr
->
level_i
=
0
;
tr
->
level_i
=
0
;
tr
->
level_p
=
0
;
tr
->
level_p
=
0
;
bs
->
i_byte_in
=
in
->
i_
size
;
bs
->
i_byte_in
=
in
->
i_
buffer
;
bs
->
i_byte_out
=
0
;
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
;
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 */
/* We're really late */
next_fact_x
=
10
.
0
;
next_fact_x
=
10
.
0
;
}
}
else
else
{
{
next_fact_x
=
((
double
)(
tr
->
i_current_gop_size
-
in
->
i_
size
))
/
next_fact_x
=
((
double
)(
tr
->
i_current_gop_size
-
in
->
i_
buffer
))
/
(
tr
->
i_wanted_gop_size
-
in
->
i_
size
);
(
tr
->
i_wanted_gop_size
-
in
->
i_
buffer
);
}
}
if
(
next_fact_x
>
QUANT_I
)
if
(
next_fact_x
>
QUANT_I
)
...
@@ -1710,7 +1710,7 @@ void E_(process_frame)( sout_stream_t *p_stream,
...
@@ -1710,7 +1710,7 @@ void E_(process_frame)( sout_stream_t *p_stream,
for
(
;
;
)
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 */
/* Search next start code */
for
(
;;
)
for
(
;;
)
...
@@ -1759,15 +1759,15 @@ void E_(process_frame)( sout_stream_t *p_stream,
...
@@ -1759,15 +1759,15 @@ void E_(process_frame)( sout_stream_t *p_stream,
}
}
bs
->
i_byte_out
+=
bs
->
p_w
-
bs
->
p_ow
;
bs
->
i_byte_out
+=
bs
->
p_w
-
bs
->
p_ow
;
p_out
->
i_
size
=
bs
->
p_w
-
bs
->
p_ow
;
p_out
->
i_
buffer
=
bs
->
p_w
-
bs
->
p_ow
;
tr
->
i_current_gop_size
-=
in
->
i_
size
;
tr
->
i_current_gop_size
-=
in
->
i_
buffer
;
tr
->
i_wanted_gop_size
-=
p_out
->
i_
size
;
tr
->
i_wanted_gop_size
-=
p_out
->
i_
buffer
;
tr
->
i_new_gop_size
+=
bs
->
i_byte_out
;
tr
->
i_new_gop_size
+=
bs
->
i_byte_out
;
#if 0
#if 0
msg_Dbg( p_stream, "%d: %d -> %d (r: %f, n:%f, corr:%f)",
msg_Dbg( p_stream, "%d: %d -> %d (r: %f, n:%f, corr:%f)",
tr->picture_coding_type, in->i_
size
, p_out->i_size,
tr->picture_coding_type, in->i_
buffer
, p_out->i_size,
(float)in->i_
size
/ p_out->i_size,
(float)in->i_
buffer
/ p_out->i_size,
next_fact_x, tr->quant_corr);
next_fact_x, tr->quant_corr);
#endif
#endif
}
}
...
...
modules/stream_out/transrate/transrate.c
View file @
8547ffaa
...
@@ -2,7 +2,7 @@
...
@@ -2,7 +2,7 @@
* transrate.c: MPEG2 video transrating module
* transrate.c: MPEG2 video transrating module
*****************************************************************************
*****************************************************************************
* Copyright (C) 2003 VideoLAN
* 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>
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Laurent Aimar <fenrir@via.ecp.fr>
* Laurent Aimar <fenrir@via.ecp.fr>
...
@@ -45,12 +45,12 @@ static void Close ( vlc_object_t * );
...
@@ -45,12 +45,12 @@ static void Close ( vlc_object_t * );
static
sout_stream_id_t
*
Add
(
sout_stream_t
*
,
es_format_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
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
,
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
* Module descriptor
...
@@ -130,8 +130,6 @@ static int Open( vlc_object_t *p_this )
...
@@ -130,8 +130,6 @@ static int Open( vlc_object_t *p_this )
p_stream
->
p_sys
=
p_sys
;
p_stream
->
p_sys
=
p_sys
;
p_stream
->
p_sout
->
i_padding
+=
200
;
return
VLC_SUCCESS
;
return
VLC_SUCCESS
;
}
}
...
@@ -205,13 +203,18 @@ static int Del ( sout_stream_t *p_stream, sout_stream_id_t *id )
...
@@ -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
,
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_sys_t
*
p_sys
=
p_stream
->
p_sys
;
if
(
id
->
b_transrate
)
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
);
transrate_video_process
(
p_stream
,
id
,
p_buffer
,
&
p_buffer_out
);
if
(
p_buffer_out
)
if
(
p_buffer_out
)
...
@@ -226,13 +229,13 @@ static int Send( sout_stream_t *p_stream, sout_stream_id_t *id,
...
@@ -226,13 +229,13 @@ static int Send( sout_stream_t *p_stream, sout_stream_id_t *id,
}
}
else
else
{
{
sout_BufferDelete
(
p_stream
->
p_sout
,
p_buffer
);
block_Release
(
p_buffer
);
return
VLC_EGENERIC
;
return
VLC_EGENERIC
;
}
}
}
}
static
int
transrate_video_process
(
sout_stream_t
*
p_stream
,
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
;
transrate_t
*
tr
=
&
id
->
tr
;
bs_transrate_t
*
bs
=
&
tr
->
bs
;
bs_transrate_t
*
bs
=
&
tr
->
bs
;
...
@@ -241,16 +244,16 @@ static int transrate_video_process( sout_stream_t *p_stream,
...
@@ -241,16 +244,16 @@ static int transrate_video_process( sout_stream_t *p_stream,
while
(
in
!=
NULL
)
while
(
in
!=
NULL
)
{
{
sout_buffer
_t
*
p_next
=
in
->
p_next
;
block
_t
*
p_next
=
in
->
p_next
;
int
i_flags
=
in
->
i_flags
;
int
i_flags
=
in
->
i_flags
;
in
->
p_next
=
NULL
;
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_duration
+=
in
->
i_length
;
id
->
i_next_gop_size
+=
in
->
i_
size
;
id
->
i_next_gop_size
+=
in
->
i_
buffer
;
in
=
p_next
;
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
>=
300000
)
||
(
id
->
i_next_gop_duration
>
p_stream
->
p_sys
->
i_shaping_delay
)
)
||
(
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,
...
@@ -275,17 +278,17 @@ static int transrate_video_process( sout_stream_t *p_stream,
while
(
id
->
p_current_buffer
!=
NULL
)
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
)
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
;
id
->
p_current_buffer
->
p_next
=
NULL
;
sout_BufferChain
(
out
,
id
->
p_current_buffer
);
block_ChainAppend
(
out
,
id
->
p_current_buffer
);
}
}
else
else
{
{
E_
(
process_frame
)(
p_stream
,
id
,
id
->
p_current_buffer
,
out
);
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
;
id
->
p_current_buffer
=
p_next
;
}
}
...
...
modules/stream_out/transrate/transrate.h
View file @
8547ffaa
...
@@ -5,7 +5,7 @@
...
@@ -5,7 +5,7 @@
* Copyright (C) 2003 Antoine Missout
* Copyright (C) 2003 Antoine Missout
* Copyright (C) 2000-2003 Michel Lespinasse <walken@zoy.org>
* Copyright (C) 2000-2003 Michel Lespinasse <walken@zoy.org>
* Copyright (C) 1999-2000 Aaron Holtzman <aholtzma@ess.engr.uvic.ca>
* 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>
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Laurent Aimar <fenrir@via.ecp.fr>
* Laurent Aimar <fenrir@via.ecp.fr>
...
@@ -98,8 +98,8 @@ struct sout_stream_id_t
...
@@ -98,8 +98,8 @@ struct sout_stream_id_t
void
*
id
;
void
*
id
;
vlc_bool_t
b_transrate
;
vlc_bool_t
b_transrate
;
sout_buffer
_t
*
p_current_buffer
;
block
_t
*
p_current_buffer
;
sout_buffer
_t
*
p_next_gop
;
block
_t
*
p_next_gop
;
mtime_t
i_next_gop_duration
;
mtime_t
i_next_gop_duration
;
size_t
i_next_gop_size
;
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