Paramount Software UK Limited has signed an OEM agreement with Primo Software to use PrimoBurner in Macrium Reflect disk imaging, file backup and disk cloning software.

Macrium Reflect is a complete disaster recovery solution for home or business, used worldwide to protect documents, data and operating systems.

Paramount Software UK Limited have an international customer base and supply a number of leading organizations and public corporations with disk imaging, back up and recovery solutions.

QRO Solutions has chosen DVDBuilder, PrimoMpeg and PrimoBurner to add capabilities to its cutting edge Automatic Number Plate Recognition (ANPR) systems.

QRO designed and supplied the first effective portable ANPR systems built around a commercially available laptop computer. The portable laptop system with its robust design has proved a very popular format, resulting in sales of large numbers of these systems to Police departments. Presently QRO is a major supplier of ANPR applications in the UK and around the world.

For more information about QRO Solutions please go to: www.qrosolutions.co.uk

Primo Software is proud to announce the first public release of the AVBlocks Software Development Kit. AVBlocks is a cross-platform software development kit for encoding, decoding and transforming video and audio. The AVBlocks SDK is optimized for high performance and supports MPEG2, AVC/H.264, DVD, DVB/ATSC, and HDTV and Mobile video formats.

AVBlocks 1.0 Release Candidate is immediately available for Windows, Mac and Ubuntu Linux.

In order to change the subtitles color it is necessary to know the color indices that are used in the subpicture stream and then to define those colors in the subpicture palette.

Details:

The DVD subtitles are placed in a subpicture stream in the MPEG-2 file. The subpicture stream contains a series of bitmaps in which the colors are defined not as absolute colors but as indices from a color palette. This palette contains 16 colors and can be defined using the <subpicturePalette> tag in DVDBuilder. The color indices are numbered from 1 to 16. Undefined colors (indices) in the subpicture palette default to white. Each subtitle bitmap uses up to 4 color indices from this subpicture palette.

Example:

If the subpicture stream uses color indices 7 and 8 the DVDBuilder project may look like this:

<?xml version="1.0" encoding="utf-8"?>
<dvd version="1.1.0.1" xmlns="http://www.primosoftware.com/dvdbuilder">
  <videoManager firstPlayNavigate="Title=1;"/>
  <titleSet>
   <subpictureStreams>
     <stream languageCode="EN" mpegStreamID="0xBD" mpegSubstreamID="0x20"/>
   </subpictureStreams>

   <titles>
    <title id="1" chapters="00:00:00">
     <subpicturePalette>
      <color index="1" value="#000000" />
      <color index="2" value="#000000" />
      <color index="3" value="#000000" />
      <color index="4" value="#000000" />
      <color index="5" value="#000000" />
      <color index="6" value="#000000" />
      <color index="7" value="#FF0000" />
      <color index="8" value="#00FF00" />
      <color index="9" value="#000000" />
      <color index="10" value="#000000" />
      <color index="11" value="#000000" />
      <color index="12" value="#000000" />
      <color index="13" value="#000000" />
      <color index="14" value="#000000" />
      <color index="15" value="#000000" />
      <color index="16" value="#000000" />
     </subpicturePalette>
     <videoObject file="movie.mpg" />
    </title>
   </titles>
  </titleSet>
</dvd>

If the subtitles in this sample are designed so that color index 7 represents the main color (fill) and color index 8 represents the outline, the result will be red text with green outline.

The subtitle color is also affected by the pixel contrast (transparency). The effective color can be a mix of the color coming from the subpicture palette and the color of the video content. Both subpicture transparency and color indices are part of the subpicture stream and cannot be changed by DVDBuilder. DVDBuilder merely remaps already used color indices to different colors.

PrimoBurnerSDK v3.5.6 introduced a new way for writing hidden tracks in audio CDs. Until now there would always be a digital silence of 2 seconds at the start of the pregap on the first track. Now PrimoBurner SDK allows these two seconds to be filled with user data as well. To achieve this all that needs to be done is set the pregap start of the first track to -150. The following code demonstrates this new behavior:

void WriteToCD_HiddenTrack_With_User_Data_In_First_2seconds(char driveLetter)
{
       IEngine * engine = Library::CreateEngine();
       engine->Initialize();

       int deviceIndex = Library::GetCDROMIndexFromLetter(driveLetter);

       IDeviceEnum * devices = engine->GetDevices();
       IDevice* dev = devices->GetItem(deviceIndex, 1);

       IAudioCD* audio = Library::CreateAudioCD();
       audio->SetDevice(dev);
       audio->SetAudioDecodingMethod(ADM_MEMORY);

       char_t* inputPath = _T("C:\sample.wav");

       IAudioInput* ain = Library::CreateAudioInput();
       ain->SetFilePath(inputPath);

       bool_t res = audio->GetAudioInputsRef()->Add(ain);
       if (!res)
       {
             // failed to add audio input
             return;
       }

       // Leave AudioCD to be the single owner the IAudioInput instance
       ain->Release();
       ain = NULL;

       int32_t len1 = audio->GetInputLength(audio->GetAudioInputsRef()->GetItemRef(0));

       // It is essential that the audio input should be 2 seconds longer than usual,
       // since the first 150 frames(blocks) of the input will be written in the 2s pregap
       // that is usually filled with digital silence
       printf("audio frames: %d", len1);

       ICDSession* pSession = Library::CreateCDSession();
       pSession->SetType(ST_CDDA);

       ICDTrack* pTrack = Library::CreateCDTrack();
       pTrack->SetType(TT_AUDIO);

       // CD_PREGAP_START equals -150 - this will allow you to write user data in
       // the first 2 seconds of the pregap as well
       pTrack->SetPregapStart(CD_PREGAP_START);

       // Just leave the first 2 seconds as the intended pregap (hidden track) and continue
       // from address 0 with the rest of the audio input data
       pTrack->SetStart(0);

       int32_t pos = len1 - 1;

       // Since the first two seconds of the audio input will be in the pregap,
       // then the actual end is CD_PREGAP_LENGTH blocks earlier as well.
       pTrack->SetEnd(pos - CD_PREGAP_LENGTH);

       // The same goes for the postgap
       pTrack->SetPostgapEnd(pos - CD_PREGAP_LENGTH);
       pSession->GetTracksRef()->Add(pTrack);
       pTrack->Release();

       audio->SetCDSession(pSession);

       pSession->Release();

       res = audio->WriteToCD();
       if (!res)
       {
             printf("n last error: 0x%x  n ", audio->GetLastError());
       }

       audio->Release();

       dev->Release();
       devices->Release();

       engine->Shutdown();
       engine->Release();
}

Note the CD_PREGAP_START constant – it is a negative value and equals -150. Using a pregap start value other than -150 and less then 0 will result in AUDIOCD_INVALID_CD_SESSION error.

Also, there is a new method added to IAudioInput interface called SetForceMinTrackLength – if you intend to form a single audio track from several small audio inputs then it may be better to call this method with FALSE as input parameter for each of these inputs. By default PrimoBurner SDK ensures that the audio inputs could provide at least 4 seconds of data – any inputs that are shorter will have trailing silence added when burned to the disc. The new method allows one to override this behavior. There is also a corresponding ‘get’ method in IAudioInput interface called GetForceMinTrackLength.

The following example shows a DVD that has one title made of a video object using audio/video elementary streams. Note that the version attribute in the <dvd> tag is set to 2.1.1.1, because the <audioStream> and <videoStream> tags require DVDBuilder 2.1.1.1 or later. 

<?xml version=”1.0″ encoding=”utf-8″?>
<dvd version=”2.1.1.1″ xmlns=”http://www.primosoftware.com/dvdbuilder”>
  <videoManager firstPlayNavigate=”Title=1;”/>
  <titleSet>
    <audioStreams>
      <stream languageCode=”EN” mpegStreamID=”0xC0″ mpegSubstreamID=”0×00″/>
    </audioStreams>
    <titles>
      <title id=”1″ chapters=”00:00:00″>
        <videoObject>
            <audioStream file=”movie1.mpa” format=”MPA”/>
            <videoStream file=”movie1.mpv” />
        </videoObject>
      </title>
    </titles>
  </titleSet>
</dvd>

For more information, see the <videoObject> Element section from the DVDBuilder online documentation.

Minimum OS Requirements

PrimoBurner on CLR4: Windows XP SP3 and .NET Framework 4.0

PrimoBurner on CLR2: Windows XP SP2 and .NET Framework 2.0

C/C++ Runtime (CRT) Dependencies

PrimoBurner.clr4.dll and PrimoBurner.clr4.x64.dll require Microsoft.VC100.CRT.x86 and Microsoft.VC100.CRT.x64.

PrimoBurner.clr2.dll and PrimoBurner.clr2.x64.dll that are installed with PrimoBurner.3.5.1.CLR2.VC90 and PrimoBurner_x64.3.5.1.CLR2.VC90 setup packages, use Microsoft.VC90.CRT, version 9.0.30729.4148.

PrimoBurner.clr2.dll and PrimoBurner.clr2.x64.dll that are installed with PrimoBurner.3.5.1.CLR2.VC80 and PrimoBurner_x64.3.5.1.CLR2.VC80 setup packages, use Microsoft.VC80.CRT, version 8.0.50727.4053.

The PrimoBurner.NET setup packages already include and install the proper CRT. If the PrimoBurner assembly is not installed via the PrimoBurner SDK setup, the correct version of the CRT must be installed on the target machine.

One way to achieve this is to use the VC++ redistributables (vcredist_x86.exe and vcredist_x64.exe) from the links provided above.

There is a new SubpictureEncoder interface for producing DVD subtitle streams from STL subtitle format. The STL format was initially developed by Spruce Technologies and is currently used by Apple DVD Studio Pro. 

In addition, elementary audio, video and subpicture streams can now be used as input in DVDBuilder XML projects.