File: AudioEncoder.cpp

package info (click to toggle)
kodi 2%3A19.1%2Bdfsg2-2%2Bdeb11u1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 105,508 kB
  • sloc: cpp: 655,071; xml: 64,287; ansic: 37,640; sh: 8,574; python: 7,322; javascript: 2,325; makefile: 1,752; perl: 969; java: 513; cs: 390; objc: 340
file content (61 lines) | stat: -rw-r--r-- 1,709 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/*
 *  Copyright (C) 2013 Arne Morten Kvarving
 *
 *  SPDX-License-Identifier: GPL-2.0-or-later
 *  See LICENSES/README.md for more information.
 */

#include "AudioEncoder.h"

namespace ADDON
{

CAudioEncoder::CAudioEncoder(const AddonInfoPtr& addonInfo)
  : IAddonInstanceHandler(ADDON_INSTANCE_AUDIOENCODER, addonInfo)
{
  // Create "C" interface structures, used as own parts to prevent API problems on update
  m_struct.props = new AddonProps_AudioEncoder();
  m_struct.toAddon = new KodiToAddonFuncTable_AudioEncoder();
  m_struct.toKodi = new AddonToKodiFuncTable_AudioEncoder();
}

CAudioEncoder::~CAudioEncoder()
{
  // Delete "C" interface structures
  delete m_struct.toAddon;
  delete m_struct.toKodi;
  delete m_struct.props;
}

bool CAudioEncoder::Init(AddonToKodiFuncTable_AudioEncoder& callbacks)
{
  *m_struct.toKodi = callbacks;
  if (CreateInstance(&m_struct) != ADDON_STATUS_OK || !m_struct.toAddon->start)
    return false;

  return m_struct.toAddon->start(&m_struct, m_iInChannels, m_iInSampleRate, m_iInBitsPerSample,
                                 m_strTitle.c_str(), m_strArtist.c_str(), m_strAlbumArtist.c_str(),
                                 m_strAlbum.c_str(), m_strYear.c_str(), m_strTrack.c_str(),
                                 m_strGenre.c_str(), m_strComment.c_str(), m_iTrackLength);
}

int CAudioEncoder::Encode(int nNumBytesRead, uint8_t* pbtStream)
{
  if (m_struct.toAddon->encode)
    return m_struct.toAddon->encode(&m_struct, nNumBytesRead, pbtStream);
  return 0;
}

bool CAudioEncoder::Close()
{
  bool ret = false;
  if (m_struct.toAddon->finish)
    ret = m_struct.toAddon->finish(&m_struct);

  DestroyInstance();

  return ret;
}

} /*namespace ADDON*/