CiscoIPPhoneImage Display Problems

Version 1
    This document was generated from CDN thread

    Created by: Mark Stancombe-Duhm on 23-09-2011 06:51:56 AM
    We are developing an application that uses the CiscoIPPhoneImage xml structure for sending image data to older handset models using c# (for newer handsets we are using the ImageFile structure to point to actual images which works ok) and have used the supplied CipImage.dll that comes as part of the SDK but are having a problem with the display on 7940 and 7960 handsets.
     
    If the created image files are displayed using the ImageViewer.exe supplied as part of the SDK then the images display correctly, however on the handsets they tend to appear as a set of random pixels.
     
    Has anyone else come across this type of issue before and if so could they let me know a fix / workaround for it?
     
    Regards
     
    Mark

    Subject: RE: CiscoIPPhoneImage Display Problems
    Replied by: Stephen Welsh on 23-09-2011 07:10:22 AM
    Hi Mark,

    You may as well just decode/generate the CiscoIPPhoneImage yourself, it's not difficult, the details on the bit/data format can be found here:

    http://www.cisco.com/en/US/docs/voice_ip_comm/cuipph/all_models/xsi/8_5_1/xmlobjects.html#wp1033528

    I've attached sample code for the reverse (decoding a CiscoIPPhoneImage), but I'm sure you can figure out how to make it encode the image.

     1                  
     2                           var type = (CiscoIPPhoneImageType)xmlresult.Response;
     3                            var image = new Bitmap(type.Width, type.Height);
     4                            int num = 0;
     5                            int y = 0;
     6                            uint num3 = 0;
     7                            foreach (byte num4 in type.Data)
     8                            {
     9                                num3 = num4;
    10                                for (int i = 0; i < 4; i++)
    11                                {
    12                                    int red = 0;
    13                                    switch ((num3 & 3))
    14                                    {
    15                                        case 0:
    16                                            red = 0xff;
    17                                            break;
    18
    19                                        case 1:
    20                                            red = 170;
    21                                            break;
    22
    23                                        case 2:
    24                                            red = 0x55;
    25                                            break;
    26
    27                                        case 3:
    28                                            red = 0;
    29                                            break;
    30                                    }
    31                                    image.SetPixel(num++, y, Color.FromArgb(red, red, red));
    32                                    if (num >= type.Width)
    33                                    {
    34                                        num = 0;
    35                                        y++;
    36                                    }
    37                                    num3 = num3 >> 2;
    38                                }
    39                            }
    40                            var bitmap2 = new Bitmap(0x91, 100);
    41                            Graphics.FromImage(bitmap2).DrawImageUnscaledAndClipped(image,
    42                                new Rectangle(0, 0, 0x91, 100));


    Thanks

    Stephen

    Subject: RE: CiscoIPPhoneImage Display Problems
    Replied by: Mark Stancombe-Duhm on 28-09-2011 09:57:16 AM
    Hi Stephen,
    Thanks for the detail on writing our own component. I did think of this but was hoping we could avoid that route if possible to use the Cisco supplied assembly functions as these are able to cope with various incoming image formats (png, jpg, bmp) so we would probably have to cope with all those formats.

    Thanks

    Mark