Commit adff2a85 authored by Cyril Deguet's avatar Cyril Deguet

Re-added the new packet allocation method in PS input, using packet caches.
With warning level 1, you can see when a packet is allocated or freed; the
goal is to never call 'malloc' nor 'free', except at the beginning of the
stream.
The size of the different caches can be adjusted in plugins/mpeg/input_ps.h.
If 'free' is called too often, it means that a cache is too small, so try
to increase its size.
parent 6116299e
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* input_ext-dec.h: structures exported to the VideoLAN decoders * input_ext-dec.h: structures exported to the VideoLAN decoders
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN * Copyright (C) 1999, 2000 VideoLAN
* $Id: input_ext-dec.h,v 1.27 2001/04/05 16:37:15 asmax Exp $ * $Id: input_ext-dec.h,v 1.28 2001/04/16 12:34:28 asmax Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* Michel Kaempf <maxx@via.ecp.fr> * Michel Kaempf <maxx@via.ecp.fr>
...@@ -33,6 +33,7 @@ typedef struct data_packet_s ...@@ -33,6 +33,7 @@ typedef struct data_packet_s
{ {
/* Nothing before this line, the code relies on that */ /* Nothing before this line, the code relies on that */
byte_t * p_buffer; /* raw data packet */ byte_t * p_buffer; /* raw data packet */
long l_size; /* buffer size */
/* Decoders information */ /* Decoders information */
byte_t * p_payload_start; byte_t * p_payload_start;
......
This diff is collapsed.
...@@ -2,9 +2,10 @@ ...@@ -2,9 +2,10 @@
* input_ps.h: thread structure of the PS plugin * input_ps.h: thread structure of the PS plugin
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN * Copyright (C) 1999, 2000 VideoLAN
* $Id: input_ps.h,v 1.4 2001/04/05 16:37:15 asmax Exp $ * $Id: input_ps.h,v 1.5 2001/04/16 12:34:28 asmax Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* Cyril Deguet <asmax@via.ecp.fr>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
...@@ -29,3 +30,55 @@ typedef struct thread_ps_data_s ...@@ -29,3 +30,55 @@ typedef struct thread_ps_data_s
/* We're necessarily reading a file. */ /* We're necessarily reading a file. */
FILE * stream; FILE * stream;
} thread_ps_data_t; } thread_ps_data_t;
#define DATA_CACHE_SIZE 150
#define PES_CACHE_SIZE 150
#define SMALL_CACHE_SIZE 150
#define LARGE_CACHE_SIZE 150
#define MAX_SMALL_SIZE 50 // frontier between small and large packets
typedef struct
{
data_packet_t ** p_stack;
long l_index;
} data_packet_cache_t;
typedef struct
{
pes_packet_t ** p_stack;
long l_index;
} pes_packet_cache_t;
typedef struct
{
byte_t * p_data;
long l_size;
} packet_buffer_t;
typedef struct
{
packet_buffer_t * p_stack;
long l_index;
} small_buffer_cache_t;
typedef struct
{
packet_buffer_t * p_stack;
long l_index;
} large_buffer_cache_t;
typedef struct
{
data_packet_cache_t data;
pes_packet_cache_t pes;
small_buffer_cache_t small;
large_buffer_cache_t large;
} packet_cache_t;
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment