]> git.sesse.net Git - vlc/blob - modules/video_filter/atmo/AtmoChannelAssignment.cpp
Remove useless vlc_object_detach() before vlc_object_release()
[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 #include <string.h>
10 #include <stdlib.h>
11 #include <malloc.h>
12 #include "AtmoChannelAssignment.h"
13
14
15 CAtmoChannelAssignment::CAtmoChannelAssignment(void)
16 {
17   m_psz_name = strdup("");
18   m_mappings = NULL;
19   m_num_channels = 0;
20   system = ATMO_FALSE;
21 }
22
23 CAtmoChannelAssignment::CAtmoChannelAssignment(CAtmoChannelAssignment &source)
24 {
25   m_num_channels = 0; m_psz_name = NULL;
26   m_mappings = source.getMapArrayClone(m_num_channels);
27   setName( source.getName() );
28   system = source.system;
29 }
30
31 CAtmoChannelAssignment::~CAtmoChannelAssignment(void)
32 {
33   free(m_psz_name);
34 }
35
36 void CAtmoChannelAssignment::setName(const char *pszNewName)
37 {
38   free(m_psz_name);
39   m_psz_name = pszNewName ? strdup(pszNewName) : strdup("");
40 }
41
42 void CAtmoChannelAssignment::setSize(int numChannels)
43 {
44   if(numChannels != m_num_channels)
45   {
46      delete []m_mappings;
47      m_mappings = NULL;
48      m_num_channels = numChannels;
49      if(m_num_channels > 0)
50      {
51        m_mappings = new int[m_num_channels];
52        memset(m_mappings, 0, sizeof(int) * m_num_channels);
53      }
54   }
55 }
56
57 int *CAtmoChannelAssignment::getMapArrayClone(int &count)
58 {
59   count = m_num_channels;
60   if(count == 0) return NULL;
61   int *temp = new int[m_num_channels];
62   memcpy(temp, m_mappings, sizeof(int) * m_num_channels);
63   return(temp);
64 }
65
66 int CAtmoChannelAssignment::getZoneIndex(int channel)
67 {
68    if(m_mappings && (channel>=0) && (channel<m_num_channels))
69      return m_mappings[channel] ;
70    else
71      return -1;
72 }
73
74 void CAtmoChannelAssignment::setZoneIndex(int channel, int zone)
75 {
76  if(m_mappings && (channel>=0) && (channel<m_num_channels))
77     m_mappings[channel] = zone;
78 }
79
80