]> git.sesse.net Git - vlc/blob - modules/video_filter/atmo/AtmoChannelAssignment.cpp
playlist: use playlist_TogglePause() directly, fix minor races
[vlc] / modules / video_filter / atmo / AtmoChannelAssignment.cpp
1 /*
2  * AtmoChannelAssignment.cpp: Class for storing a hardware channel to zone mapping
3  * List
4  *
5  * See the README.txt file for copyright information and how to reach the author(s).
6  *
7  * $Id$
8  */
9
10 #ifdef HAVE_CONFIG_H
11 # include "config.h"
12 #endif
13
14 #include <string.h>
15 #include <stdlib.h>
16 #include <malloc.h>
17 #include "AtmoChannelAssignment.h"
18
19
20 CAtmoChannelAssignment::CAtmoChannelAssignment(void)
21 {
22   m_psz_name = strdup("");
23   m_mappings = NULL;
24   m_num_channels = 0;
25   system = ATMO_FALSE;
26 }
27
28 CAtmoChannelAssignment::CAtmoChannelAssignment(CAtmoChannelAssignment &source)
29 {
30   m_num_channels = 0; m_psz_name = NULL;
31   m_mappings = source.getMapArrayClone(m_num_channels);
32   setName( source.getName() );
33   system = source.system;
34 }
35
36 CAtmoChannelAssignment::~CAtmoChannelAssignment(void)
37 {
38   delete[] m_mappings;
39   free(m_psz_name);
40 }
41
42 void CAtmoChannelAssignment::setName(const char *pszNewName)
43 {
44   free(m_psz_name);
45   m_psz_name = pszNewName ? strdup(pszNewName) : strdup("");
46 }
47
48 void CAtmoChannelAssignment::setSize(int numChannels)
49 {
50   if(numChannels != m_num_channels)
51   {
52      delete[] m_mappings;
53      m_num_channels = numChannels;
54      if(m_num_channels > 0)
55      {
56        m_mappings = new int[m_num_channels];
57        memset(m_mappings, 0, sizeof(int) * m_num_channels);
58      }
59      else
60        m_mappings = NULL;
61   }
62 }
63
64 int *CAtmoChannelAssignment::getMapArrayClone(int &count)
65 {
66   count = m_num_channels;
67   if(count == 0) return NULL;
68   int *temp = new int[m_num_channels];
69   memcpy(temp, m_mappings, sizeof(int) * m_num_channels);
70   return(temp);
71 }
72
73 int CAtmoChannelAssignment::getZoneIndex(int channel)
74 {
75    if(m_mappings && (channel>=0) && (channel<m_num_channels))
76      return m_mappings[channel] ;
77    else
78      return -1;
79 }
80
81 void CAtmoChannelAssignment::setZoneIndex(int channel, int zone)
82 {
83  if(m_mappings && (channel>=0) && (channel<m_num_channels))
84     m_mappings[channel] = zone;
85 }
86
87