MP4-File

 view release on metacpan or  search on metacpan

File.xs  view on Meta::CPAN

MP4FILE::new()
  CODE:
    Newxz(RETVAL, 1, MP4FILE);
    RETVAL->fh = MP4_INVALID_FILE_HANDLE;

  OUTPUT:
    RETVAL

void
MP4FILE::DESTROY()
  PPCODE:
    if (MP4_IS_VALID_FILE_HANDLE(THIS->fh))
    {
      MP4Close(THIS->fh);
    }

    Safefree(THIS);

bool
MP4FILE::Close()
  PPCODE:
    if (MP4_IS_VALID_FILE_HANDLE(THIS->fh))
    {
      MP4Close(THIS->fh);
      THIS->fh = MP4_INVALID_FILE_HANDLE;
    }
    XSRETURN_YES;

bool
MP4FILE::Read(fileName, verbosity = 0)
    const char *fileName;

File.xs  view on Meta::CPAN

  CODE:
    RETVAL = MP4GetVerbosity(THIS->fh);

  OUTPUT:
    RETVAL

void
MP4FILE::SetVerbosity(verbosity)
    u_int32_t verbosity;

  PPCODE:
    MP4SetVerbosity(THIS->fh, verbosity);

MP4TrackId
MP4FILE::FindTrackId(index, type = NULL, subType = 0)
    u_int16_t index;
    const char *type;
    u_int8_t subType;

  CODE:
    RETVAL = MP4FindTrackId(THIS->fh, index, type, subType);

File.xs  view on Meta::CPAN

      MP4GetMetadataWriter,
      MP4GetMetadataComment,
      MP4GetMetadataTool,
      MP4GetMetadataYear,
      MP4GetMetadataAlbum,
      MP4GetMetadataGenre,
      MP4GetMetadataGrouping
    };
    char *value;

  PPCODE:
    if (fp[ix](THIS->fh, &value) && value != NULL)
    {
      ST(0) = newSVpv(value, 0);
      SvUTF8_on(ST(0));
      free(value);
      XSRETURN(1);
    }

    XSRETURN_UNDEF;

File.xs  view on Meta::CPAN

    RETVAL

void
MP4FILE::GetMetadataCoverArt(index = 0)
    u_int32_t index

  PREINIT:
    u_int8_t *data;
    u_int32_t length;

  PPCODE:
    if (MP4GetMetadataCoverArt(THIS->fh, &data, &length _v19ARG(index)))
    {
      if (data != NULL)
      {
        ST(0) = newSVpvn((const char *) data, length);
        free(data);
      }
      else
      {
        ST(0) = newSVpvn("", 0);

File.xs  view on Meta::CPAN

  ALIAS:
    GetMetadataDisk = 1

  PREINIT:
    static bool (*fp[])(MP4FileHandle, u_int16_t *, u_int16_t *) = {
      MP4GetMetadataTrack,
      MP4GetMetadataDisk
    };
    u_int16_t curr, total;

  PPCODE:
    if (fp[ix](THIS->fh, &curr, &total))
    {
      EXTEND(SP, 2);
      ST(0) = newSVuv(curr);
      ST(1) = newSVuv(total);
      XSRETURN(2);
    }

    XSRETURN_EMPTY;

File.xs  view on Meta::CPAN

    RETVAL = fp[ix](THIS->fh, curr, total);

  OUTPUT:
    RETVAL

void
MP4FILE::GetMetadataTempo()
  PREINIT:
    u_int16_t tempo;

  PPCODE:
    if (MP4GetMetadataTempo(THIS->fh, &tempo))
    {
      XSRETURN_UV(tempo);
    }

    XSRETURN_UNDEF;

bool
MP4FILE::SetMetadataTempo(tempo)
    u_int16_t tempo

File.xs  view on Meta::CPAN

    RETVAL = MP4SetMetadataTempo(THIS->fh, tempo);

  OUTPUT:
    RETVAL

void
MP4FILE::GetMetadataCompilation()
  PREINIT:
    u_int8_t cpl;

  PPCODE:
    if (MP4GetMetadataCompilation(THIS->fh, &cpl))
    {
      if (cpl)
        XSRETURN_YES;
      else
        XSRETURN_NO;
    }

    XSRETURN_UNDEF;



( run in 2.008 seconds using v1.01-cache-2.11-cpan-5511b514fd6 )